Как копировать файлы в Linux с помощью cp

Что такое команда cp в Linux?
Команда cp — это утилита командной строки для Unix-подобных систем, которая копирует файлы и каталоги. Она есть практически во всех дистрибутивах Linux.
Определение: cp — простая команда для создания копий файлов или каталогов с опциями контроля перезаписи и сохранения атрибутов.
Пользоваться cp просто: откройте терминал и перейдите (cd) в каталог с файлами, которые хотите копировать.
Синтаксис cp
Синтаксис очень похож на mv: указываете источники и одну цель.
cp [опции] >источник>... >назначение>Можно передать несколько источников, но назначение должно быть одно — файл или каталог.
Важно: если в качестве назначения указать каталог, копии файлов попадут внутрь этого каталога. Если указать новое имя файла — будет создан файл с таким именем.
Копирование файла
Копия файла в том же каталоге с новым именем:
cp file.txt newfile.txt
Копия в подкаталог с новым именем:
cp file.txt Backup/newfile.txtКопирование в каталог (оставить имя файла прежним):
cp file.txt BackupКопирование нескольких файлов в каталог:
cp file1.txt file2.txt file3.txt Backup
Использование подстановки (wildcard) для одномоментного копирования по шаблону:
cp *.txt Backup
Подстановки удобны, если у файлов общая часть имени или расширение.
Копирование каталога
Чтобы скопировать каталог и все его содержимое, используйте ключ -R (рекурсивно):
cp -R Files BackupЭта команда создаст внутри Backup копию каталога Files.
Если нужно скопировать содержимое каталога, но не сам каталог, используйте -T вместе с -R:
cp -RT Files BackupПолезные опции cp
Ниже — часто используемые ключи, которые повышают безопасность и прозрачность операций.
- -v — verbose. Показывает каждый копируемый файл.
cp -v file.txt newfile.txt
- -i — interactive. Спрашивает подтверждение при перезаписи.
cp -i file.txt newfile.txt
- -p — preserve. Сохраняет атрибуты файла: владельца, права и время модификации.
cp -p file.txt Backup/- -a — archive. Комбинирует несколько опций (рекурсивно, сохраняет атрибуты, символические ссылки и т.д.). Полезно для резервных копий.
cp -a Sources Backup- -u — update. Копирует только если источник новее назначения или если назначения нет.
cp -u *.txt BackupПрактические советы и рекомендации
- Всегда делайте dry-run логический план команд, прежде чем выполнять массовое копирование. Для этого сначала используйте ls с тем же шаблоном.
- Для больших наборов файлов используйте -v или перенаправьте вывод в лог.
- Если работаете с правами и владельцами, добавляйте -p или -a.
- Чтобы избежать потерь, перед массовой операции сделайте тест на одном файле.
Когда cp не подходит
- При копировании между машинами cp не работает напрямую. Используйте rsync, scp или tar+ssh.
- Для огромных наборов данных с частой синхронизацией лучше rsync (экономит трафик и время).
- Для побитовой клонирования дисков используйте dd или специальные инструменты.
Альтернативы и когда их выбирать
- rsync — для синхронизации, инкрементальных копий и копирования по сети. Подходит для резервного копирования и миграции.
- scp / sftp — копирование по SSH (удобно для одной-двух операций между хостами).
- tar | ssh — упаковка в архив перед пересылкой (сохраняет структуру и права, полезно при копировании по сети).
- cpdup / gcp (parallel cp) — альтернативы в специфичных дистрибутивах, могут иметь дополнительные возможности.
Ментальные модели и эвристики
- Модель «источник → назначение»: всегда четко мысленно определяйте, что именно является источником, а что — местом назначения.
- Правило трёх проверок: 1) список источников (ls), 2) наличие места назначения, 3) тест на одном файле.
- Эвристика „предпочти всегда -i или -u при массовых операциях“ помогает избежать случайной перезаписи.
Чек-листы по ролям
Dev/Desktop-пользователь:
- Убедитесь, что находитесь в правильной директории (pwd)
- Просмотрите файлы для копирования (ls *.txt)
- Сделайте копию одного файла с -v и проверьте результат
Администратор резервного копирования:
- Используйте -a для сохранения атрибутов
- Логируйте операции (stdout → лог)
- Планируйте ротацию и удерживание резервов
DevOps/инженер развертывания:
- Для межхостовой передачи выбирайте rsync или tar+ssh
- Используйте –checksum (rsync) для точной проверки
- Проверяйте права и владельцев после копирования
Мини‑методология безопасного копирования (шаги)
- Подготовка: ls и pwd — подтвердите расположение.
- Тест: cp -v один файл в целевой каталог.
- Массовая команда: cp с -i/-u/-a в зависимости от задачи.
- Проверка: diff или ls -l для убеждения, что всё скопировалось.
- Логирование: сохраняйте вывод и проверяйте ошибки.
Примеры команд-«чек-лист» (шпаргалка)
- Простое копирование одного файла:
cp file.txt Backup/- Копирование каталога рекурсивно, с сохранением атрибутов:
cp -a Projects Backup/- Интерактивное копирование с выводом:
cp -iv file.txt Backup/- Копирование только новых или изменённых файлов:
cp -u *.txt Backup/Советы по крайнему случаю и восстановлению
Если вы перезаписали файлы по ошибке:
- Если у вас есть резервная копия, восстановите из неё.
- Если нет, попробуйте утилиты восстановления (extundelete, testdisk) только на размонтированном разделе.
Важно: восстановление данных — не тривиальная процедура. Немедленно прекратите запись на диск и действуйте аккуратно.
Совместимость и примечания по версиям
GNU cp (в большинстве Linux) и BSD cp (в некоторых системах типа macOS) имеют близкий синтаксис, но опции могут отличаться. Проверяйте man cp в своей системе перед использованием продвинутых ключей.
Быстрая диаграмма принятия решения
flowchart TD
A[Нужно скопировать файлы?] --> B{Между хостами}
B -- Да --> C{Нужна синхронизация}
B -- Нет --> D{Каталог или файлы}
C -- Да --> E[Используйте rsync]
C -- Нет --> F[Используйте scp или tar+ssh]
D -- Каталог --> G[cp -a или cp -R]
D -- Файлы --> H[cp с нужными ключами '-i -v -u']Тесты и критерии приёмки
- Копирование одного файла: новый файл существует и идентичен исходному (diff).
- Рекурсивное копирование: структура каталогов и файлы совпадают.
- Сохранение атрибутов: владельцы и время модификации совпадают при использовании -p или -a.
Небольшая галерея типичных ошибок и как их избежать
- Ошибка: забыли указать каталог назначения. Решение: всегда проверяйте последний аргумент.
- Ошибка: случайная перезапись. Решение: использовать -i или делать бэкап перед операцией.
- Ошибка: потеря прав доступа. Решение: применять -p или восстанавливать права отдельно.
Безопасность и конфиденциальность
- cp сам по себе не шифрует данные. При передаче по сети используйте SSH‑основанные методы (scp, rsync over ssh).
- Проверьте права на файлы после копирования, чтобы не открыть доступ посторонним пользователям.
Краткое руководство для резервного копирования (SOP)
- Определите список источников.
- Выполните пробное копирование одного каталога с -a.
- Запустите массовый прогон с логированием и мониторингом свободного места.
- Проверить контрольные суммы нескольких случайных файлов.
- Архивируйте или удаляйте старые резервные копии по политике удержания.
Глоссарий — 1 строка
- cp: copia — команда для копирования файлов и каталогов в Unix/Linux.
Часто задаваемые вопросы
Как скопировать каталог целиком?
Используйте рекурсивную опцию -R или ключ -a для сохранения атрибутов:
cp -a SourceDir Backup/Как избежать перезаписи существующих файлов?
Добавьте -i для интерактивного подтверждения или -u для копирования только новых файлов:
cp -i file.txt Backup/
cp -u *.txt Backup/Чем cp отличается от rsync?
cp прост и работает только локально. rsync эффективен при синхронизации, копировании по сети и инкрементальных обновлениях.
Короткое резюме
- cp — базовая команда для копирования в Linux.
- Используйте -R/-a для каталогов и -i/-v/-p для безопасности и прозрачности.
- Для сетевых и инкрементальных задач рассматривайте rsync, scp или tar+ssh.
Завершение: практика делает работу в терминале быстрой и предсказуемой. Начните с простых команд, добавляйте опции по мере необходимости и всегда проверяйте назначения перед массовыми операциями.
Похожие материалы
Запуск Командной строки от имени администратора
Отключить напоминания Facebook Memories и скрыть их
Как управлять cookie в Chrome, Firefox и Edge
Как управлять расширениями в Chrome, Edge, Vivaldi
Добавить пользовательские эмодзи в Discord