Копирование файлов (POSIX)
cp [-f|-i] [-Rrp] [Расширения ЗОСРВ «Нейтрино»] исходный_файл конечный_файл
cp [-f|-i] [-Rrp] [Расширения ЗОСРВ «Нейтрино»] исходный_файл... результ_каталог
- -A
- (Расширение ЗОСРВ «Нейтрино») Сохранить время доступа к исходному файлу.
- -B
- (Расширение ЗОСРВ «Нейтрино») Использовать очень небольшой буфер для копирования (2 Кб)
- -c
- (Расширение ЗОСРВ «Нейтрино») Создать каталоги, необходимые для открытия целевого пути. Например, если каталог
/home/eric
не существует и указывается путь:
cp -c file /home/eric/source/file
утилита cp выполняет эквивалент следующего:
mkdir -p /home/eric/source
cp file /home/eric/source/file
- -d
- (Расширение ЗОСРВ «Нейтрино») Распределить по нескольким каталогам.
- -D
- (Расширение ЗОСРВ «Нейтрино») При использовании опции -R спускаться в каталог устройств и нижележащие каталоги. Это поведение утилиты по умолчанию; для предотвращения перехода в каталог устройств и нижележащие каталоги при использовании опции cp -R выберите опцию -N.
- -f
- (Расширение ЗОСРВ «Нейтрино») Принудительно удалить ссылку на целевой файл перед копированием. Эта опция предотвращает появление интерактивных приглашений (если не выбрана опция -i), но не деактивирует диагностические сообщения.
- -i
- Выполнить в интерактивном режиме; всегда выдавать приглашение на подтверждение наличия целевого пути, вне зависимости от полномочий на изменение целевого файла. Опция -i позволяет избежать случайного затирания информации в файлах при копировании. При отсутствии полномочий на запись в выходной файл и положительном ответе на запрос сначала удаляется ссылка на целевой файл. В противном случае выходной файл перезаписывается и усекается.
Поведение утилиты при выборе комбинации опций -i и -f аналогично ее поведению при выборе только опции -i, за исключением того, что если в ответе на запрос выбрано значение yes, то сначала в любом случае удаляется ссылка на целевой файл, даже при наличии полномочий на его изменение. При выборе только опции -i ссылка на целевой файл удаляется только при отсутствии полномочий на его изменение.
- -l n
- ("эль" – расширение ЗОСРВ «Нейтрино») Если исходный_файл является каталогом и указана опция -R или -r, то копировать только n уровней дерева каталогов. При выборе -l
0
опция -R или -r недействительны; копируются только файлы на текущем уровне, имена которых перечислены непосредственно в командной строке.
- -L
- (Расширение ЗОСРВ «Нейтрино») Выполнить попытку сохранения жестких ссылок. При обнаружении утилитой cp файла с количеством ссылок более 1 она запоминает идентификатор устройства и серийный номер файла (индексный дескриптор). Если в процессе выполнения утилиты cp обнаружен еще один файл с количеством ссылок более 1, серийный номер и идентификатор устройства которого совпадают с предыдущим, утилита cp вместо создания второй копии файла создает ссылку. При изменении целевого носителя созданные ссылки стираются из памяти утилиты cp. (Это важно при резервном копировании на гибкие или съемные жесткие диски.)
- -M qnx|unix
- (Расширение ЗОСРВ «Нейтрино») Создавать рекурсивные копии в режиме UNIX (по умолчанию) или в прежнем режиме ЗОСРВ «Нейтрино».
Ранее в ЗОСРВ «Нейтрино» выполнялось копирование содержимого каталогов, перечисленных в командной строке, в результирующий каталог. В UNIX в результирующий каталог копируется непосредственно сам каталог (как при выборе mv). В любом случае, если копируется только один каталог, а в качестве целевого указан несуществующий каталог, с помощью утилиты cp создается целевой каталог, в который копируется содержимое исходного каталога.
| Режим по умолчанию в ЗОСРВ «Нейтрино» отличается от аналогичного режима в QNX 4. |
Для получения дополнительной информации см. раздел "Рекурсивное копирование" далее.
- -N
- (Расширение ЗОСРВ «Нейтрино») Не спускаться в каталог устройств и нижележащие каталоги при использовании опции -R. По умолчанию cp -R спускается в каталог устройств и нижележащие каталоги при пересечении с деревом каталогов; выбор опции -N позволяет этого избежать. Пример:
cp -R / /hd/backup
В результате утилита cp резервирует содержимое диска, включая содержимое каталога /dev
.
| В этом примере в каталог /hd/backup/dev выполняется только резервное копирование данных дисковых устройств (блок- ориентированных специальных файлов), поскольку утилита cp не переносит байт-ориентированные специальные файлы в рекурсивные копии. |
После добавления опции -N пример выглядит следующим образом:
cp -RN / /hd/backup
В результате выполняется резервное копирование содержимого диска, однако каталог /dev
не копируется, поскольку он отсутствует на дисковом устройстве.
- -n
- (Расширение ЗОСРВ «Нейтрино») Копировать только в том случае, если исходный файл создан после выходного (т.е. исходный файл был изменен позже) или выходной файл не существует.
- -p
- После копирования предпринять попытку дублирования времени изменения и файлового режима для каждого входного файла в соответствующем выходном файле. Кроме того, дублировать принадлежность каждого файла, если в процессе задействованы полномочия суперпользователя (root). Если соответствующие полномочия для процесса отсутствуют, дублирование завершается неуспешно.
- -r
- Выполнить рекурсивное копирование каталогов. Если исходным файлом является специальный файл (например, специальный файл FIFO), утилита cp не создает выходной специальный файл. Для получения дополнительной информации см. в раздел о рекурсивном копировании и описания опций -M и -R.
- -R
- Если исходный_файл является каталогом, выполнить рекурсивное копирование каталога со всеми файлами и подкаталогами с целью сохранения специальных файлов. В ЗОСРВ «Нейтрино» создание блок-ориентированных специальных файлов и байт-ориентированных специальных файлов таким способом невозможно. Для получения дополнительной информации см. разделе о рекурсивном копировании и описания опций -M и -r.
- -s
- (Расширение Нейтрино) Выполнить в безопасном режиме; копировать только при наличии полномочий на изменение существующего целевого файла. Если полномочия на изменение файла отсутствуют, файл пропускается без вывода приглашений.
- -t
- (Расширение ЗОСРВ «Нейтрино») Не предпринимать попытку дублирования файловых времени и режима, если указана опция -p или переменная среды
POSIX_STRICT
установлена.
- -V
- (Расширение ЗОСРВ «Нейтрино») Вывести максимально расширенную информацию. В дополнение ко всей информации, выводимой в случае установки опции -v, при выборе этой опции также выводится индикатор выполнения (% завершенных операций) и строки с информацией о пропущенных утилитой cp файлах и каталогах (т.е. пользователь может видеть как обработанные утилитой cp файлы, так и необработанные).
Например, при выборе опций -R и -n значение cp -VRn более эффективно, чем cp -vRn, поскольку в этом случае выбор опции -v может привести к тому, что выполнение утилиты cp завершится, и будет вновь выведено приглашение без представления каких-либо результатов.
- -v
- (Расширение ЗОСРВ «Нейтрино») Вывести расширенную информацию. Отобразить строку комментария каждый раз при копировании файла или создании каталога.
- -W
- (Расширение ЗОСРВ «Нейтрино») Вывести расширенную информацию для отладки (debug).
- -X
- (Расширение ЗОСРВ «Нейтрино») Копировать только при отсутствии целевого файла.
- -x
- (Расширение ЗОСРВ «Нейтрино») Копировать только при наличии целевого файла.
- исходный_файл
- Путь к копируемому файлу. При необходимости присвоения каталогу имени исходный_файл также требуется выбрать опцию -R.
- конечный_файл
- Путь для копирования единственного файла.
- результ_каталог
- Путь к существующему каталогу, который должен содержать выходной файл (выходные файлы).
ЗОСРВ «Нейтрино»
aarch64, arm, armv7, e2k, mips, ppc, x86
Для утилиты cp существуют две формы синтаксиса:
- cp [-f|-i] [-Rrp] [Расширения ЗОСРВ «Нейтрино»] исходный_файл конечный_файл
- Утилита cp копирует содержимое исходного файла в целевой файл с именем конечный_файл. Первая форма синтаксиса применяется, когда целевой файл не является существующим каталогом, и существует только один исходный файл.
- cp [-f|-i] [-Rrp] [Расширения ЗОСРВ «Нейтрино»] исходный_файл... результ_каталог
- Для каждого значения исходный_файл утилита cp копирует содержимое файла в целевой файл в существующем каталоге с именем результ_каталог. Имя выходного файла в результирующем каталоге совпадает с базовым именем (конечный компонент пути), если этот файл не является каталогом (см. "Рекурсивное копирование"). Пример.
cp dir/dir/myfile /existingdir
копирует содержимое dir/dir/myfile
в файл /existingdir/myfile
.
Вторая форма применяется, когда целевой файл является существующим каталогом или при определении нескольких исходных файлов.
Общая информация
Если опция -R (рекурсивное копирование) не выбрана, то утилита cp не копирует исходный_файл, являющийся каталогом.
| Для дублирования списков файлов используется утилита POSIX pax -rw. С помощью функции find можно выбирать наборы файлов по сложным критериям, а затем перенаправлять их в pax. |
Поведение утилиты cp в случае, если целевой файл уже существует, зависит от используемых опций. Если опция -f или -i не выбрана, то утилита cp выдает приглашение только при отсутствии полномочий на изменение существующего целевого файла. При этом сначала выводится запрос о необходимости удаления ссылки на файл. Если ответ на запрос отрицательный, то утилита cp продолжает обработку всех остальных файлов. Запрос выводится только в том случае, если стандартным потоком ввода stdin является терминал ввода вывода. В противном случае утилита cp выводит в стандартный поток ошибок stderr диагностическое сообщение и пропускает файл.
При копировании файлов на съемный носитель, например гибкий или съемный диск, и переполнении этого носителя утилита cp закрывает и удаляет не полностью скопированный целевой файл, выводит соответствующее сообщение, а затем завершается.
Рекурсивное копирование
При рекурсивном копировании каталога целевым местоположением должен быть каталог. При копировании нескольких элементов соответствующий каталог должен уже существовать. При копировании одного каталога утилита cp создает целевой каталог (все промежуточные каталоги должны уже существовать, если не выбрана опция -c).
Для cp доступны два режима рекурсивного копирования:
- В историческом режиме QNX 4, определяемом опцией -Mqnx, утилита cp копирует файлы и каталоги из исходного каталога в целевой. Сам исходный каталог в целевом каталоге не дублируется.
- При выборе режима по умолчанию (-Munix) утилита cp дублирует исходный каталог в целевом (если не выполняется копирование только одного каталога и целевой каталог уже существует – в этом случае режимы -Munix и -Mqnx ничем не отличаются).
| Режим по умолчанию в ЗОСРВ «Нейтрино» отличается от аналогичного режима в QNX 4 |
Например, в режиме по умолчанию -Munix при выборе значения cp -r /bin /mydir/bin каталог /bin дублируется в каталог /mydir/bin, т.е. целевым местоположением является каталог /mydir/bin/bin, а файл /bin/sh копируется в каталог /mydir/bin/bin/sh. Поведение утилиты в данном случае аналогично обработке целевых местоположений утилитой mv.
В режиме -Mqnx при выборе значения cp -Mqnx -r /bin /mydir/bin содержимое каталога /bin копируется в каталог /mydir/bin (например, файл /bin/sh копируется в /mydir/bin/sh).
Копирование файлов файл1, файл2 и файл3 из текущего рабочего каталога в каталог /home/eric:
cp файл1 файл2 файл3 /home/eric
Резервное копирование всего содержимого каталога home на гибкие диски (если /f0 является точкой монтирования для/dev/fd0), в режиме рекурсивного копирования UNIX по умолчанию:
cp -rvp /home /f0
Та же операция в режиме рекурсивного копирования ЗОСРВ «Нейтрино»:
cp -Mqnx -rvp /home /f0/home
Рекурсивное копирование каталога /home/eric в каталог /home/ejohnson, если /home/ejohnson еще не создан (режим -Munix или -Mqnx):
cp -rv /home/eric /home/ejohnson
Та же операция в режиме -Mqnx, если каталог ejohnson уже существует:
cp -Mqnx -rv /home/eric /home/ejohnson
Та же операция в режиме -Munix, если каталог ejohnson уже существует:
cp -Munix -rv /home/eric/. /home/ejohnson
Рекурсивное копирование содержимого текущего каталога в каталог /mydir/ в режиме -Mqnx или -Munix:
cp -Rpv . /mydir/
Та же операция в режиме -Munix:
cp -Munix -Rpv * /mydir/
| В предыдущем примере при использовании режима -Mqnx вместо -Munix содержимое каталогов, перечисленных в командной строке, копируется в каталог /mydir/ (т.е. файл ./bin/ls копируется в каталог /mydir/ls, а каталог ./usr/bin соответствует каталогу /mydir/bin в целевом местоположении). |
Рекурсивное копирование каталога /home/eric в каталог /backups/eric:
cp -rv /home/eric /backups
Та же операция в режиме рекурсивного копирования ЗОСРВ «Нейтрино»:
cp -Mqnx -rv /home/eric /backups/eric
- Входные файлы
- Если опция -r не выбрана и указан только один исходный файл, этот исходный файл может быть любого типа.
Если опция -r указана или имеется несколько исходных файлов, входные файлы, определяемые каждым операндом исходный_файл, в т.ч. файлы, содержащиеся в перечисленных каталогах, должны быть стандартными, блок-ориентированными специальными файлами или каталогами.
В случае использования опции -R файлы FIFO дублируются в структуру целевого каталога, но содержимое исходных FIFO не копируется. При обнаружении утилитой cp в исходных файлах блок-ориентированных или байт-ориентированных специальных файлов возникает ошибка, поскольку утилита cp не может создавать их в целевом местоположении. - Выходные файлы
- Каждый новый выходной файл относится к одному из следующих типов файлов:
- каталог, содержащий копии файлов и подкаталогов (если они существуют), обнаруженных во входном каталоге;
- стандартный файл с таким же содержимым, как и в соответствующем входном файле.
- FIFO, созданный в результате выбора опции -R и определения FIFO в качестве соответствующего входного файла. Данные исходного FIFO не копируются в новый FIFO (т.е. новый FIFO остается пустым).
- Поскольку соответствующий входной файл представлял собой символьную ссылку и выбрана опция -R, создается символьная ссылка. Новая символьная ссылка привязана к тому же пути, что и исходная символьная ссылка.
Если в существующем целевом каталоге определены другие типы файлов, утилита cp открывает этот каталог для записи и предпринимает попытку копирования в него содержимого соответствующего входного файла.
- POSIX_STRICT
- От этой переменной зависит, копируется ли время изменения файла. При ее определении опции расширения ЗОСРВ «Нейтрино» деактивируются. Определение переменной среды
POSIX_STRICT
влияет на опции -p и -t следующим образом: POSIX_STRICT | Опция | Действие |
---|
Установлена | Ни -p, ни -t | Если целевое местоположение не существует, дублируется только режим. |
Установлена | -p | Дублируется время и режим; если утилита запущена пользователем root, то также дублируются идентификаторы пользователя и группы. |
Установлена | -pt | Если утилита запущена пользователем root, то дублируются идентификаторы пользователя и группы. |
Установлена | -t | Если целевое местоположение не существует, дублируется только режим. |
Не установлена | Ни -p, ни -t | Дублируются время и режим. |
Не установлена | -p | Дублируется время и режим; если утилита запущена пользователем root, то также дублируются идентификаторы пользователя и группы. |
Не установлена | -pt | Если утилита запущена пользователем root, то дублируются идентификаторы пользователя и группы. |
Не установлена | -t | Если целевое местоположение не существует, дублируется только режим. |
- 0
- Все входные файлы скопированы успешно.
- >0
- Возникла ошибка.
Если утилита cp выполняет копирование нескольких файлов или рекурсивное копирование, но опция -R не выбрана, то cp не копирует файл FIFO и байт-ориентированные специальные файлы.
Если опция -R указана и предпринятая утилитой cp попытка копирования определенного файла в указанной иерархии файлов завершается неуспешно, то выполняется обработка остальных файлов в этой иерархии.
Базовые подсистемы ЗОСРВ «Нейтрино», POSIX
mv, ln, pax
Предыдущий раздел: Утилиты