Страница Справочника cp.1
CP(1) Справочник основных команд FreeBSD CP(1)
НАЗВАНИЕ
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, не следовать никаким символическим ссылкам.
Это режим работы по умолчанию.
-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 сохранять следующие атрибуты каждого исходного файла
в создаваемой копии: время модификации, время доступа, флаги файла,
режим доступа, идентификаторы пользователя и группы, насколько это
позволено правами доступа.
Если значения идентификаторов пользователя и группы не могут быть
сохранены, не выводится никакого сообщения об ошибке, и возвращае-
мое программой значение статуса завершения не изменяется.
Если исходный файл имеет установленный бит set-user-ID и значение
идентификатора пользователя не может быть сохранено, бит set-user-
ID в атрибутах копии не сохраняется. Если исходный файл имеет
установленный бит set-group-ID и значение идентификатора группы не
может быть сохранено, бит set-group-ID в атрибутах копии не сохра-
няется. Если исходный файл имеет установленные биты set-user-ID и
set-group-ID и значение либо идентификатора пользователя, либо
идентификатора группы не может быть сохранено, ни один из битов
set-user-ID и set-group-ID в атрибутах копии не сохраняется.
-v Выводить больше информации, показывая файлы по мере их копирования.
Для каждого уже существующего целевого файла, его содержимое перезаписы-
вается, если позволяют права. Его режим доступа и идентификаторы пользо-
вателя и группы не изменяются, если не задана опция -p.
Во второй синтаксической форме целевой_каталог должен существовать, если
только не был указан единственный исходный_файл, являющийся каталогом, и
опция -R.
Если целевой файл не существует, используются права исходного файла,
изменённые в соответствии со значением umask (см. csh(1)). Если исходный
файл имеет установленный бит set-user-ID, этот бит сбрасывается, если
только исходный файл и файл назначения не принадлежат одному владельцу.
Если исходный файл имеет установленный бит set-user-ID, этот бит сбрасы-
вается, если только исходный файл и файл назначения не принадлежат одной
группе, а пользователь является членом этой группы. Если установлены оба
бита, и set-user-ID, и set-group-ID, должны быть соблюдены оба вышеупомя-
нутых условия, в противном случае оба этих бита сбрасываются.
Для создания или перезаписи файлов требуются соответствующие права
доступа.
Утилита 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'').
ИСТОРИЯ
Команда cp появилась в Version 1 AT&T UNIX.
FreeBSD 7.0 27 октября 2006 FreeBSD 7.0