cp - копирование файлов

cp [-R [-H | -L | -P]] [-f | -i | -n] [-lpv] исходный_файл целевой_файл
cp [-R [-H | -L | -P]] [-f | -i | -n] [-lpv] исходный_файл целевой_каталог

В первой форме утилита cp, копирует содержимое файла исходный_файл в целевой_файл. Во второй форме содержимое каждого указанного файла копируется в целевой_каталог. Имена самих файлов при этом не изменяются. Если cp обнаруживает попытку копирования файла самого в себя, копирование не производится.

Возможно использование следующих опций:

-H
Если указана опция -R, следовать по символическим ссылкам, указанным в командной строке, но не следовать по символическим ссылкам, встречающимся в процессе обхода дерева каталогов.
-L
Если указана опция -R, следовать всем символическим ссылкам.
-P
Если указана опция -R, не следовать никаким символическим ссылкам. Это режим работы cp по умолчанию.
-R
Если аргумент исходный_файл указывает на каталог, cp копирует этот каталог вместе со всем деревом файловой иерархии, которое он содержит. Если исходный_файл оканчивается на /, копируется не сам каталог, а только его содержимое. Эта опция также указывает на необходимость копирования символических ссылок, а не объектов, на которые они указывают, и заставляет cp создавать специальные файлы вместо того, чтобы копировать их, как обычные. Создаваемые каталоги имеют те же права доступа, что и исходные каталоги, вне зависимости от действующего для процесса значения umask.

Обратите внимание, что cp копирует жёсткие ссылки как отдельные файлы. Если вам нужно сохранять жёсткие ссылки, используйте tar(1), cpio(1) или pax(1).

-f
Для каждого уже существующего целевого имени пути, удалять его и создавать новый файл, не требуя подтверждения операции, вне зависимости от его прав доступа. ( Опция -f отменяет действие любой из ранее указанных опций -i или -n ).
-i
Если в результате копирования будет перезаписан существующий файл, cp запросит подтверждение пользователя. Если ответ, полученный со стандартного ввода, начинается символом "y" или "Y", будет предпринята попытка копирования ( опция -i отменяет действие любой из ранее заданных опций -f или -n )
-l
Создавать жёсткие ссылки на обычные файлы в иерархии вместо того, чтобы их копировать.
-n
Не перезаписывать существующие файлы. ( Опция -n отменяет действие любой из предшествующих опций -f или -i ).
-p
Заставляет cp сохранять следующие атрибуты каждого исходного файла в создаваемой копии: время модификации, время доступа, флаги файла, режим доступа, идентификаторы пользователя и группы, насколько это позволено правами доступа.

Если значения идентификаторов пользователя и группы не могут быть сохранены, не выводится никакого сообщения об ошибке, и возвращаемое программой значение статуса завершения не изменяется.

Если исходный файл имеет установленный SUID бит и значение идентификатора пользователя не может быть сохранено, SUID бит в атрибутах скопированного файла не сохраняется. Если исходный файл имеет установленный бит SGID и значение идентификатора группы не может быть сохранено, бит SGID в атрибутах копии не сохраняется. Если исходный файл имеет установленные биты SUID и SGID и значение либо идентификатора пользователя, либо идентификатора группы не может быть сохранено, ни один из битов SUID и SGID в атрибутах копии не сохраняется.

-v
Выводить больше информации, показывая файлы по мере их копирования.

Для каждого уже существующего целевого файла, его содержимое перезаписывается, если позволяют права доступа. Его режим доступа и идентификаторы пользователя и группы не изменяются, если не задана опция -p.

Во второй синтаксической форме целевой_каталог должен существовать, если только не был указан единственный исходный_файл, являющийся каталогом, и опция -R.

Если целевой файл не существует, используются права доступа исходного файла, изменённые в соответствии со значением umask (см. csh(1)). Если исходный файл имеет установленный бит SUID, этот бит сбрасывается, если только исходный файл и файл назначения не принадлежат одному владельцу. Если исходный файл имеет установленный бит set-user-ID, этот бит сбрасывается, если только исходный файл и файл назначения не принадлежат одной группе, а пользователь является членом этой группы. Если установлены оба бита, и SUID, и SGID, должны быть соблюдены оба вышеупомянутых условия, в противном случае оба этих бита сбрасываются.

Для создания или перезаписи файлов требуются соответствующие права доступа.

Программа cp всегда следует символическим ссылкам, если только не указана опция -R ( в этом случае она по умолчанию символическим ссылкам не следует ). Опции -H или -L ( совместно с опцией -R ) приводят к тому, что cp будет следовать символическим ссылкам, как описано выше. Опции -H, -L и -P игнорируются, если не указана опция -R. Кроме этого, эти опции отменяют друг друга, и действия команды определяются той опцией, которая была указана последней.

Если cp получает сигнал SIGINFO (см. аргумент status для stty(1)), на стандартный вывод будут выведены имена текущего исходного и целевого файлов, а также прогресс копирования в процентах.

СТАТУС ЗАВЕРШЕНИЯ
Программа cp возвращает 0 в случае успешного завершения и >0 в случае возникновения ошибки.

СОВМЕСТИМОСТЬ
Старые версии cp имели опцию -r. Данная реализация поддерживает эту опцию, однако её поведение отличается от исторического. Использование этой опции настоятельно не рекомендуется, так как её поведение зависит от конкретной реализации. В операционной системе FreeBSD, -r является синонимом для -RL и работает так же, если это не переопределено другими флагами. Реализация -r в старых версиях отличалась тем, что при воссоздании иерархии файлов специальные файлы копировались как обычные.

Опции -v и -n являются нестандартными и их использование в командных сценариях не рекомендуется.

СМОТРИ ТАКЖЕ
mv(1), rcp(1), umask(2), fts(3), symlink(7)

СТАНДАРТЫ
Предполагается, что утилита cp совместима со стандартом IEEE Std 1003.2 (``POSIX.2'').