Как копировать директории в Linux с помощью cp

Кратко о cp
cp — команда, которая копирует файлы и каталоги. Она создаёт независимую копию содержимого. Определение: рекурсивное копирование — это перенос всей структуры папок и файлов внутри исходной директории.
Основной синтаксис:
cp [опции] <папка-источник> <папка-назначение>Базовые примеры
Копировать одну папку в другое место:
cp <источник> <назначение>Пример — копируем папку /random в /home:
cp /random /homeЕсли в /random есть подпапки и файлы, добавьте флаг -R:
cp -R /random /home- -R означает рекурсивно. Команда скопирует все вложенные каталоги и файлы.
Полезные опции cp
- -R — рекурсивное копирование директорий.
- -a — архивный режим: рекурсивно и сохраняет атрибуты (права, временные метки, символьные ссылки).
- -v — показывать прогресс (verbose).
- -u — копировать только если источник новее или файл отсутствует в месте назначения.
- -i — спрашивать подтверждение при перезаписи.
- -f — принудительно перезаписывать файлы.
Пример с сохранением атрибутов и подробным выводом:
cp -av /random /homeКопирование нескольких папок одновременно
Вы можете перечислить несколько источников, указав в конце целевую директорию:
cp <папка1> <папка2> <папка3> <назначение>Пример:
cp -R /random /personal /content /homeЭто скопирует три папки внутрь /home.
Частые ошибки и как их избежать
- Пробелы в именах. Если имя содержит пробелы, берите его в кавычки:
cp -R "Мои документы" "/backup/Мои документы"- Перезапись. По умолчанию cp перезаписывает без предупреждения. Для безопасности пользуйтесь -i.
- Права доступа. Если нет прав на чтение источника или запись в назначение, команда завершится с ошибкой. Используйте sudo только при необходимости.
- Символьные ссылки. Для сохранения ссылок используйте -a, иначе cp развернёт ссылку в реальный файл.
Важно: всегда проверяйте путь назначения. Ошибка в пути может привести к потере времени или к нежелательной перезаписи.
Когда cp не подходит и альтернативы
- Для синхронизации больших наборов данных или повторных копирований лучше использовать rsync. Он делает инкрементальные копии и поддерживает проверку контрольных сумм.
- Для архивации и переноса по сети подойдёт tar в связке с ssh.
- Для копирования только изменённых файлов используйте rsync с флагами -avz –delete по необходимости.
Пример быстрой проверки без копирования (dry-run) с rsync:
rsync -avzn /random/ /home/random/Ментальная модель
Представьте cp как одноразовый снимок: он копирует текущее состояние каталога в новую папку. rsync — это синхронизатор, который сравнивает и обновляет только отличия. Для одного разового резервного копирования cp обычно достаточен; для повторных синхронизаций используйте rsync.
Контроль качества и критерии приёмки
- Количество файлов совпадает: число файлов в источнике и в копии должно быть одинаковым.
- Размеры совпадают: суммарный объём должен совпадать с точностью до политик файловой системы.
- Контрольные суммы: выборочно проверяйте md5/sha256 для критичных файлов.
Пример быстрой проверки количества файлов:
find /random | wc -l
find /home/random | wc -lКритерии приёмки для задач резервного копирования:
- Все файлы и папки перенесены.
- Права и временные метки сохранены при необходимости.
- Отсутствуют ошибки прав доступа в логах.
Плейбук на один случай использования
- Проверить свободное место: df -h.
- Проверить права доступа: ls -la /путь.
- Выполнить копирование с флагом -av и логом:
cp -av /random /backup 2>&1 | tee ~/cp-backup.log- Сравнить число файлов и выборочно контрольные суммы.
- Удалить временные файлы, если всё в порядке.
Ролевые чек-листы
Для новичка:
- Используйте -i.
- Начинайте с маленькой папки в тестовую директорию.
- Не запускайте sudo, если не понимаете почему он нужен.
Для системного администратора:
- Предпочитайте -a для сохранения атрибутов.
- Логируйте вывод и проверяйте ошибки.
- Рассмотрите rsync для регулярных задач.
Для разработчика:
- Используйте cp для тестовых копий среды.
- Для деплоя используйте проверенные скрипты и контроля версий.
Тестовые сценарии и примеры приёмки
- Копирование с вложениями:
cp -R /test_src /test_dstОжидание: структура папок и все файлы доступны в /test_dst.
- Сохраняем права и ссылки:
cp -a /test_src /test_dstОжидание: символьные ссылки остались ссылками, права и временные метки совпадают.
Когда стоит использовать rsync вместо cp
- Большие данные с частыми обновлениями.
- Нужна проверка целостности и минимизация трафика.
- Необходимость удалять файлы в месте назначения, которых уже нет в истоке.
Короткое резюме
cp — быстрый и простой инструмент для одноразового копирования директорий. Для сохранения прав и ссылок используйте -a. Для сложных или повторяющихся задач выбирайте rsync. Всегда проверяйте пути и права доступа перед выполнением операций.
Важно: перед массовыми операциями сделайте тестовую реплику и проверьте результат.
Похожие материалы
Резервная копия и восстановление Windows Terminal
Отключить звук запуска Windows
Как удалить профиль пользователя в Windows 11
Писк и щелчки в Sony WH-1000XM4 — исправление
Не запускается служба WLAN AutoConfig — решение