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

НАЗВАНИЕ

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.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *