Параметры команды cp и перезапись без подтверждения | 2 способа: yes и обратная косая черта
cp при копировании нескольких файлов спрашивает, перезаписывать ли каждый, и работа останавливается. Команда cp — сокращение от Copy, она копирует файлы и каталоги; в статье собраны основы использования, параметры и 2 способа перезаписать всё без подтверждения.
Команда cp без вопросов перезаписывает файл с тем же именем в месте назначения. Чтобы этого не происходило, задан [alias cp='cp -i'], и перед перезаписью появляется запрос подтверждения.
✅ Базовое использование
Базовый синтаксис выглядит так.
cp -[опции] <источник: Файл или каталог> <назначение: путь или Файл или каталог (путь)>Сначала указывают, что копировать, а после — место назначения или новое имя.

# Копирование файла > в файл
cp file1 file2
# Копирование файла > в каталог
cp file1 dir1/
# Копирование 2 файлов > в каталог
cp file1 file2 dir1/ testuser]# cp dir1/ dir2/
cp: -r not specified; omitting directory 'dir1/'
Для копирования каталога нужен параметр -r или -R либо -a.
- -r/-R : рекурсивное копирование каталога и его содержимого
- -a : рекурсивное копирование с сохранением атрибутов (включает -r)
✅ 2 способа перезаписать всё командой cp
При запуске cp появляется вопрос [overwrite], потому что для cp задан псевдоним (alias) [cp -i].
cp -a
cp: overwrite 'messages_ori'? y
~]# alias cp
alias cp='cp -i'С одним-двумя файлами это не страшно, но при копировании многих файлов отвечать приходится на каждый, что неудобно.
В таком случае перезаписать без подтверждения можно двумя способами ниже.
yes | cp -ar /home/ ./Первый способ — добавить в начало [yes |]: на каждый запрос автоматически вводится y, и копирование идёт без остановки. Второй — поставить перед командой обратную косую черту [\]: тогда запускается исходная команда cp в обход псевдонима.
\cp -ar /home/ ./✅ Параметры команды cp & симулятор
| Опция | Описание | |
|---|---|---|
| -a | --archiveКопирование с сохранением всех прав, владельца, группы, временных меток и прочего у исходного файла[сохраняет все права, владельца, группу, временные метки и прочее] + [-d : копирование самой символической ссылки] + [-R : рекурсивное копирование каталогов] | |
| -b | Если файл назначения уже есть, старый файл сохраняется в резервную копию, затем выполняется копирование | |
| -d | Если источник — символическая ссылка, копируется сама ссылка | |
| -f | Если файл назначения существует, он принудительно удаляется, затем выполняется копирование | |
| -i | --interactiveЗапрос подтверждения у пользователя перед перезаписьюalias cp='cp -i' | |
| -l(строчная) | Копирование в виде жёсткой ссылки | |
| -P | Копирование символической ссылки как есть, без перехода по ней | |
| -p | Сохранение владельца, группы, прав и временных меток исходного файла | |
| -r, -R | Рекурсивное копирование каталогов (включая подкаталоги и файлы)Параметр -r не входит в стандарт POSIX и может вызывать проблемы при обработке символических ссылок и файлов устройств. | |
| -s | Копирование в виде символической ссылки (источник нужно указывать абсолютным путём) | |
| -u | Не перезаписывать, если файл назначения новее или такой же | |
| -v | Вывод хода копирования (verbose)Параметр, который выводит сообщение о завершении копирования | |
| -x | Не копировать, если у источника и назначения разные файловые системы. |
🔲 Параметр -a: сохранение атрибутов исходного файла & копирование подкаталогов(&файлов)
Чтобы скопировать подкаталоги с сохранением атрибутов исходных файлов, достаточно одного параметра [-a]. Однако некоторые скрипты и средства автоматизации явно требуют [-r], поэтому иногда вместе с ним указывают [-r] или [-R].
testuser]# cp -a dir1 dir2
testuser]# ll dir*
dir1:
total 0
-rw-r--r-- 1 root root 0 Jun 8 14:11 file1
-rw-r--r-- 1 root root 0 Jun 8 14:15 file2
dir2:
total 0
-rw-r--r-- 1 root root 0 Jun 8 14:11 file1
-rw-r--r-- 1 root root 0 Jun 8 14:15 file2
testuser]# [-d : копирование самой символической ссылки]+[-R : рекурсивное копирование каталогов]+[--preserve=all]
| Что входит в --preserve=all | Описание |
|---|---|
| mode | Права доступа к файлу (rwx и т. д.) |
| ownership | Владелец (user) и группа (group) |
| timestamps | Временные метки, например время последнего изменения |
| links | Число жёстких ссылок (сохраняется общий inode) |
| context | Контекст безопасности SELinux |
| xattr | Расширенные атрибуты (дополнительные метаданные, хранящиеся вместе с файлом) |
| all | Сокращение, которое включает все перечисленные выше пункты сразу |
🔲 Параметр -u: копирование только новых и изменённых файлов
- Копирует, только если в месте назначения нет файла с тем же именем, или если источник новее
- Часто используется для резервного копирования и синхронизации
testuser]# cp -u file1 file2
testuser]# ll file*
-rw-r--r-- 1 root root 0 Jun 8 14:11 file1
-rw-r--r-- 1 root root 0 Jun 8 14:30 file2
ℹ️ О партнёрских ссылках
Материалы этого сайта содержат партнёрские ссылки. Если посетитель покупает товар или услугу по такой ссылке, сайт получает комиссию от продавца. При этом сумма, которую платит покупатель (при акционных скидках сумма снижается ↓), не увеличивается. Указанные цены, скидки и наличие актуальны на момент написания и могут отличаться, поэтому перед покупкой уточняйте их у продавца. Товары выбираются и оцениваются по нашим собственным критериям, а комиссия не влияет ни на порядок, ни на содержание обзоров.