Дополнительные опции 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.
Здесь аргумент 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".
-t, --target-directory=КАТАЛОГ
копирует все аргументы ИСТОЧНИК в КАТАЛОГ
-T, --no-target-directory
обрабатывать DEST как обычный файл.
-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;
другие версии могут иметь небольшие отличия.
Исправления и дополнения присылайте по адресу [email protected].
Сообщения об ошибках в этой программе присылайте по адресу
[email protected].