Provided by:
manpages-ru_0.98-4_all 
ИМЯ
cp - копирование файлов и каталогов
ОБЗОР
cp []
cp [] ...
Опции POSIX: [-fiprR] [--]
Дополнительные опции POSIX 1003.1-2003: [-HLP]
Опции GNU file-utils 4.0 (краткая форма):
[-abdfilprsuvxPR] [-S ] [-V {numbered,existing,simple}]
[--backup=CONTROL] [--sparse=] [--help] [--version] [--]
Дополнительные опции GNU file-utils 4.1 (краткая форма):
[-HLP] [--copy-contents] [--no-preserve] [--reply=HOW]
[--remove-destination] [--strip-trailing-slashes]
[--target-directory=DIR]
ОПИСАНИЕ
cp копирует файлы (или, если попросить, каталоги). Вы можете либо
копировать один файл в другой, заданный файл, либо копировать сколько
угодно файлов в заданный каталог.
Если последний аргумент является существующим каталогом, то cp копирует
каждый исходный в этот каталог (сохраняя имена). В противном
случае, если задано только два файла, то cp копирует первый файл во
второй. Если задано более двух аргументов, которые не являются опциями,
а последний аргумент не является именем какого-либо каталога, то это
приведет к ошибке.
(Так, если /a~-- это каталог, то cp -r /a /b скопирует /a в /b/a и /a/x
в /b/a/x в случае, если /b уже существует, но эта же команда будет
копировать /a в /b и /a/x to /b/x, если /b не существует, или же
завершится с ошибкой, если /b -- обычный файл).
Права доступа к файлам и каталогам будут равны тем, что были на
оригинальных файлах, логически умноженными (AND) на 0777 (другими
словами, в новых правах будут сброшены биты sticky, setuid и setgid --
Прим. ред.), а также с учетом umask(1) пользователя (за исключением
случая, когда задана опция -p). (Но во время рекурсивного копирования
каталогов, вновь создаваемые каталоги будут временно получать права,
логически сложенные (OR) со значением S_IRWXU (0700), для того, чтобы
разрешить чтение, запись и поиск во вновь созданных каталогах).
При попытке скопировать файл сам в себя ничего происходить не будет (за
исключением возможной выдачи сообщения об ошибке). Когда происходит
копирование файла в другой существующий файл, то он открывается с
использованием вызова open(path, O_WRONLY | O_TRUNC). Когда
копирование осуществляется во вновь создаваемый файл, то он создается с
использованием вызова open(path, O_WRONLY | O_CREAT, mode). Если эти
вызовы завершаются неудачно, то считается, что файл существует, а чтобы
cp попытался его удалить (unlink), необходимо указать опцию -f. Если
удаление проходит успешно, то дальше все работает как для случая с
новым файлом.
ОПЦИИ POSIX
POSIX имеет четыре с половиной опции:
-f Если требуется, удаляет существующие файлы, в которые происходит
копирование. (См. выше)
-i Спрашивает, нужно ли перезаписывать существующие файлы, в
которые происходит копирование. (Запрос выдается на стандартный
вывод ошибок, а ответ читается со стандартного ввода.
Копирование осуществляется только в случае положительного
ответа).
-p Сохраняет исходные параметры файла, такие как владелец, группа,
права доступа (включая suid и sgid биты), время последней
модификации и время последнего доступа к файлу. В случае, если
установка владельца или группы приводит к ошибке, suid и sgid
биты сбрасываются. (Заметим, что впоследствии исходный файл и
его копия могут иметь разное время последнего доступа, так как
операция копирования является доступом к исходному файлу).
-R Копировать каталоги рекурсивно; правильно обрабатывать ситуации,
когда попадаются объекты, не являющиеся обычными файлами или
каталогами. (Так, копией FIFO или специального файла будет
также являться FIFO или специальный файл).
-r Копировать каталоги рекурсивно; выполнять какие-то,
неопределенные стандартом действия, когда попадаются объекты, не
являющиеся обычными файлами или каталогами. (Так, разрешается, и
фактически одобряется, наличие опции -r как синонима для -R.
Однако, глупое поведение, которое проявляет версия cp в GNU 4.0
не запрещается.)
-- Завершает список опций.
ДОПОЛНИТЕЛЬНЫЕ ОПЦИИ POSIX 2003
Стандарт POSIX 1003.1-2003 добавляет три опции, которые определяют как
управлять символьными ссылками. Когда выполняется нерекурсивное
копирование, символьные ссылки разименовываются (берутся те объекты на
которые они указывают, вместо самой ссылки -- прим.пер.). Когда
выполняется рекурсивное копирование с использованием опции -r,
результаты зависят от реализации. Когда выполняется рекурсивное
копирование с использованием опции -R:
-H Разименовывает символьные ссылки, указанные в списке параметров.
Не разименовывает символьные ссылки, которые встречаются во
время рекурсивного копирования, а просто копирует их.
-L Разименовывает все символьные ссылки, как заданные в списке
параметров так и встретившиеся во время рекурсивного
копирования.
-P Не разименовывает никакие символьные ссылки, ни заданные в
списке параметров, ни встретившиеся во время рекурсивного
копирования. Просто копирует их как символьные ссылки.
Нет опции, работающей по умолчанию - необходимо указывать одну из опций
для достижения нужного результата.
ПОДРОБНОСТИ ВЕРСИИ GNU
Обычно файлы записываются точно в том же виде, как и были прочитаны.
См. ниже об опции --sparse, который является исключением.
По умолчанию cp не копирует каталоги (см. опцию -r ).
cp обычно отвергает копирование файла в себя же, за следующим
исключением: если заданы опции --force --backup и при этом
и , в который осуществляется копирование, идентичны и являются
обычными файлами, то cp сделает резервную копию файла: обычную или
нумерованную, как скажете. Это полезно, когда вы просто хотите сделать
резервную копию существующего файла, перед тем как его изменить.
По умолчанию, символьные ссылки не разименовываются.
ОПЦИИ GNU
-a, --archive
По возможности сохраняет структуру и атрибуты исходных файлов
при копировании (но не сохраняет структуру каталогов).
Эквивалентно заданию опций -dpPR.
-b Смотрите обсуждение резервных копий ниже.
--copy-contents (начиная с версии file-utils 4.1)
В file-utils 4.0 делаются глупые вещи, попытки копировать
содержимое файлов устройств и FIFO во время рекурсивного
копирования. Никогда не используйте эту опцию. С ней, `cp' может
просто зависнуть, читая FIFO или /dev/tty или заполнить весь
диск копируя /dev/zero.
-d Копирует символьные ссылки как символьные ссылки, а не файлы, на
которые они указывают, и сохраняет жесткие ссылки между
исходными файлами в копиях.
В file-utils 4.0 длинная опция --no-dereference была синонимом
для опции -d, но в file-utils 4.1 она является синонимом для
опции -P, в то время как опция -d эквивалентна опциям
--no-dereference --preserve=links.
-f, --force
Удаляет существующие файлы в случае возникновения ошибки при
открытии их на чтение и никогда не спрашивает подтверждения
перед тем как это сделать. (Такое поведение начинается с версии
file-utils 4.1. В file-utils 4.0 эта опция была эквивалентна
новой опции --remove-destination.)
-H (начиная с версии file-utils 4.1)
См. описание POSIX выше.
-i, --interactive
Спрашивает, нужно ли перезаписывать существующие обычные файлы.
-l, --link
Делает жесткие ссылки вместо копирования обычных файлов (не
каталогов).
-L, --dereference (начиная с версии file-utils 4.1)
Смотрите описание POSIX выше.
--no-preserve= (начиная с версии file-utils 4.1)
Не сохраняет заданные атрибуты. См. ниже опцию --preserve.
-p, --preserve
Защищает оригинальные параметры файла, такие как владелец,
группа, права доступа и временные штампы.
--preserve= (начиная с версии file-utils 4.1)
Здесь параметр АТРИБУТЫ может принимать одно из значений "mode"
(права доступа), "ownership" (владелец и группа), "timestamps"
(временные штампы), "links", "all" (всё перечисленное).
-P, --no-dereference (начиная с версии file-utils 4.1)
См. выше описание POSIX. Эта опция заменяет опцию -P в file-
utils 4.0, которая была синонимом опции --parents. См. также
опцию -d выше.
--parents (начиная с версии file-utils 4.0 также -P)
Формирует имя каждого копируемого файла путем добавления к имени
каталога, в который осуществляется копирование, символа косой
черты (/) и указанного полного имени исходного файла. Последний
заданный аргумент cp должен быть именем существующего каталога.
Например, команда
cp --parents a/b/c existing_dir
копирует файл a/b/c в existing_dir/a/b/c, создавая отсутствующие
промежуточные каталоги.
-r В file-utils 4.1: синоним опции -R. В file-utils 4.0: Копирует
каталоги рекурсивно, копирует любые не-каталоги и не символьные
ссылки (то есть FIFO и специальные файлы), как если бы они были
обычными файлами. Это глупое поведение можно получить в file-
utils 4.1 если указать опцию --copy-contents.
-R, --recursive
Копирует каталоги рекурсивно, защищая не-каталоги.
--reply=HOW (начиная с версии file-utils 4.1)
Здесь аргумент HOW может принимать одно из значений "yes", "no",
"query", определяя какой ответ будет автоматически даваться на
все вопросы: "да", "нет" или "запрос" пользователю
соответственно.
--remove-destination (начиная с версии file-utils 4.1)
Удаляет каждый существующий (в том месте куда происходит
копирование) файл, перед копированием. В версии file-utils 4.0
эта опция неявно включалась при указании опции -f.
--sparse=
Разреженный (sparse) файл содержит дыры -- последовательности
нулевых байт, которые не занимают физических блоков на диске;
системный вызов read читает их как нули. Такой подход может как
сохранить дисковое пространство, так и увеличить скорость
работы, потому что многие бинарные файлы содержат много
расположенных последовательно нулевых байт. По умолчанию, cp
определяет дыры в исходном файле с помощью простой эвристики и
делает соответствующий выходной файл также разреженным.
Параметр может принимать следующие значения:
auto Поведение по умолчанию: выходной файл является
разреженным, если входной файл также является
разреженным.
always Всегда делать выходной файл разреженным. Это полезно,
когда входной файл расположен на файловой системе,
которая не поддерживает разреженные файлы, а выходной
файл будет располагаться на файловой системе, которая их
поддерживает.
never Никогда не делать выходные файлы разреженными. Если вы
нашли применение для этой опции, дайте нам знать.
--strip-trailing-slashes (начиная с file-utils 4.1)
Удаляет все конечные символы `' из каждого аргумента. (Это может
изменить интерпретацию аргумента, если он является символьной
ссылкой на каталог.)
-s, --symbolic-link
Делает символьные ссылки вместо копирования не-каталогов. Все
имена исходных файлов должны быть полными, т. е. начинаться с
символа /, за исключением случая, когда символьные ссылки будут
создаваться в текущем каталоге. Эта опция генерирует сообщение
об ошибке, если система не поддерживает символьные ссылки.
-S Суффикс резервной копии, см. ниже.
--target-directory= (начиная с версии file-utils 4.1)
Задаёт каталог назначения, куда будет осуществляться
копирование. Имеется в виду для использования с xargs(1), как,
например, в "ls | xargs cp --target-directory=../d".
-u, --update
Не копировать не-каталоги, которые уже существуют в том месте,
куда осуществляется копирование, если они имеют такое же или
более раннее время модификации.
-v, --verbose
Выводить имя каждого файла перед его копированием.
-x, --one-file-system
Пропускать подкаталоги, которые расположены на файловых
системах, отличных от той, где начиналось копирование.
ОПЦИИ РЕЗЕРВНОГО КОПИРОВАНИЯ GNU
GNU-версии таких программ как cp, mv, ln, install и patch могут, если
потребуется, делать резервные копии файлов, которые будут перезаписаны,
изменены или уничтожены. При желании, резервные копии файлов создаются
с помощью опции -b. Как они будут называться, задает опция -V. В
случае, если имя файла резервной копии создается с помощью добавления
суффикса к имени исходного файла, то суффикс указывается с помощью
опции -S.
-b, --backup
Делать резервные копии файлов, которые будут перезаписаны или
удалены.
--backup=CONTROL
(Начиная с версии fileutils-4.1.)
-S , --suffix=
Добавить к имени файла при создании его резервной копии.
Если данная опция не задана, то суффикс можно также задать,
используя переменную окружения SIMPLE_BACKUP_SUFFIX Если не
задана ни опция, ни переменная, то по умолчанию используется
суффикс ~.
-V , --version-control=
Определяет, как будут называться резервные копии файлов.
Аргумент может принимать значения numbered (или t),
existing (или nil) и never (или simple). Если данная опция не
задана, то будет использовано значение переменной окружения
VERSION_CONTROL. Если же не задано значение и этой переменной,
то по умолчанию тип резервного копирования устанавливается в
existing.
Данная опция соответствует переменной version-control в Emacs.
Допустимыми значениями являются (допускаются однозначные
сокращения):
t, numbered
Всегда делать нумерованные резервные копии файлов.
nil, existing
Делать нумерованные резервные копии файлов для файлов,
которые уже их имеют и простые резервные копии для
остальных файлов.
never, simple
Всегда делать простые резервные копии.
СТАНДАРТНЫЕ ОПЦИИ GNU
--help Выдать подсказку на стандартный вывод и успешно завершиться.
--version
Выдать информацию о версии на стандартный вывод и успешно
завершиться.
-- Служит для обозначения конца списка опций.
ОКРУЖЕНИЕ
При работе обычным образом используются значения переменных LANG,
LC_ALL, LC_COLLATE, LC_CTYPE и LC_MESSAGES. Для GNU версии
используются также переменные SIMPLE_BACKUP_SUFFIX и VERSION_CONTROL,
контролирующие создание резервных копий, как описано выше.
СОВМЕСТИМОСТЬ
POSIX 1003.2
ЗАМЕЧАНИЯ
Данная страница описывает версию cp пакета fileutils-4.1; другие версии
могут иметь небольшие отличия. Исправления и дополнения присылайте по
адресу aeb@cwi.nl. Сообщения об ошибках в этой программе присылайте по
адресу fileutils-bugs@gnu.ai.mit.edu.
ПЕРЕВОД
Перевёл с английского Виктор Вислобоков <corochoone@perm.ru> 2003