Параметры команды cp и перезапись без подтверждения | 2 способа: yes и обратная косая черта

Тестовая средаСемейство RHELAlmaLinux 9.8Учётная запись rootПроверено 2026-10-05

cp при копировании нескольких файлов спрашивает, перезаписывать ли каждый, и работа останавливается. Команда cp — сокращение от Copy, она копирует файлы и каталоги; в статье собраны основы использования, параметры и 2 способа перезаписать всё без подтверждения.

Команда cp без вопросов перезаписывает файл с тем же именем в месте назначения. Чтобы этого не происходило, задан [alias cp='cp -i'], и перед перезаписью появляется запрос подтверждения.

✅ Базовое использование

Базовый синтаксис выглядит так.

cp -[опции] <источник: Файл или каталог​> <назначение: путь или Файл или каталог (путь)​>

Сначала указывают, что копировать, а после — место назначения или новое имя.

Команда 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Не копировать, если у источника и назначения разные файловые системы.
Симулятор команды cpalias cp='cp -i'
[root@server work]#
Работает только в браузере и не затрагивает реальные файлы. Вводите cp с разными параметрами и проверяйте результат командами ls, cat и diff. Клавиши ↑↓ возвращают ранее введённые команды, а uknew help выводит список доступных команд.

🔲 Параметр -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
Linux

ℹ️ О партнёрских ссылках
Материалы этого сайта содержат партнёрские ссылки. Если посетитель покупает товар или услугу по такой ссылке, сайт получает комиссию от продавца. При этом сумма, которую платит покупатель (при акционных скидках сумма снижается ↓), не увеличивается. Указанные цены, скидки и наличие актуальны на момент написания и могут отличаться, поэтому перед покупкой уточняйте их у продавца. Товары выбираются и оцениваются по нашим собственным критериям, а комиссия не влияет ни на порядок, ни на содержание обзоров.