Резервная копия конфига перед правкой
-a сохраняет владельца и права, поэтому копию можно вернуть на место как есть.
Команда cp копирует файлы и каталоги: с подтверждением перезаписи, с сохранением прав и времени, рекурсивно.
cp app.conf app.conf.bak
копия рядом с другим именем
cp app.conf /tmp/
в каталог под тем же именем
cp a.txt b.txt docs/
несколько файлов в каталог
cp -r project project-copy
каталог целиком
cp -a /etc/nginx ~/nginx-backup
с правами, владельцем, временем
cp -i app.conf /etc/app.conf
спросить перед перезаписью
cp -n app.conf /etc/app.conf
не перезаписывать существующий
cp -u *.conf /srv/conf/
только если источник новее
cp -v a.txt b.txt
печатать, что скопировано
cp -r project/. backup/
содержимое каталога, не сам каталог
cp источник назначение создаёт копию. Если назначение — существующий каталог,
копия ложится в него под прежним именем. Если назначения нет, появляется новый
файл с этим именем.
Без ключей cp копирует только файлы: каталог он пропустит. Каталог копируют с
-r (рекурсивно) или -a (архивно — ещё и права, владелец, время, ссылки как
ссылки).
Существующий файл назначения cp перезаписывает молча, без вопроса. Когда цена
ошибки высока, добавляй -i или -n.
Ключи cp и mv во многом общие: -i, -n, -u, -v, -b, -t. Полный
список — man cp.
| Ключ | Что делает | Пример |
|---|---|---|
-r |
Копировать каталоги рекурсивно, со всем содержимым (то же — -R). | cp -r project project-copy |
-a |
Архивный режим — рекурсивно, с правами, владельцем, временем и ссылками. | cp -a /etc/nginx ~/nginx-backup |
-i |
Спрашивать перед перезаписью существующего файла. | cp -i app.conf /etc/app.conf |
-n |
Не перезаписывать существующие файлы. | cp -n app.conf /etc/app.conf |
-u |
Копировать, только если источник новее назначения или назначения нет. | cp -u *.conf /srv/conf/ |
-v |
Печатать каждую копию — 'a' -> 'b'. | cp -v a.txt b.txt |
-p |
Сохранить права, владельца и время изменения. | cp -p app.conf app.conf.bak |
-b |
Перед перезаписью сохранить старый файл с ~ в конце имени. | cp -b new.conf app.conf |
-t dir |
Каталог назначения первым аргументом — удобно с find и xargs. | cp -t /srv/www/ index.html style.css |
--parents |
Воссоздать путь источника внутри каталога назначения. | cp --parents etc/app.conf /backup/ |
Ничего не найдено. Попробуй запрос короче.
-a сохраняет владельца и права, поэтому копию можно вернуть на место как есть.
Одна и та же команда даёт разный результат в зависимости от того, существует ли
dst. Проверь итог: ls dst.
cp работает только в пределах одной машины. По сети копируют rsync или
scp (см. ssh-client).
Источник — каталог, а -r не указан. Добавь -r или -a: cp -a src dst.
Источника нет по этому пути. Проверь pwd и имя через ls; допиши путь клавишей
Tab.
Нет права записи в каталог назначения. Посмотри ls -ld каталог; системные
каталоги — через sudo cp.
sudo cp создаёт новые файлы от root. Сохрани владельца исходника ключом -a или
поправь владельца: sudo chown student:student файл — см. chmod-chown.
Без -p или -a копия получает текущее время и права по маске umask. Для
резервных копий бери cp -a.
Место кончилось на разделе назначения. df -h путь покажет, сколько свободно, —
см. disk-usage.
cp new.conf /etc/app.conf заменит рабочий конфиг без вопроса, и прежний текст не
вернуть. Сначала копия (cp -a … .bak), потом замена — или cp -i.
cp -r в существующий каталогЕсли каталог назначения уже есть, cp -r src dst положит копию внутрь —
dst/src. Сценарий, рассчитанный на «dst станет копией», при повторном запуске
начнёт плодить вложенные каталоги.
Есть неточность? Сообщить об ошибке в статье