AllInfo
Main: Info Blog Temp Mail


unix 2010-03-10 17-28-32

cpio - копирование файлов в архив и из архива

СИНТАКСИС

cpio -i [ bBcdfkmPrsStuvV6 ] [ -C размер_буфера ] [ -E файл ]
[ -H формат ] [ -I файл [ -M сообщение ] ] [ -R id ] [ шаблон ... ]
cpio -o [ aABcLPvV ] [ -C размер_буфера ] [ -H формат ] [ -O файл [ -M сообщение ] ]
cpio -p [ adlLmPuvV ] [ -R id ] каталог

ОПИСАНИЕ

Команда cpio копирует файлы в и из архива cpio. Архив cpio может быть многотомным. Опции -i, -o и -p задают выполняемое действие. Эти (взаимоисключающие) действия описаны ниже.
Режим копирования из архива

cpio -i (copy in) выбирает файлы из стандартного входного потока, предположительно сформированного предыдущей командой cpio -o. Выбираются только файлы с именами, соответствующими шаблону. Подробнее о шаблонах см. на странице справочного руководства sh(1) и в разделе ОПЕРАНДЫ. Извлеченные файлы при необходимости создаются и копируются в текущее дерево каталогов в зависимости от описанных ниже опций. Права доступа к файлам будут такими же, как и в момент выполнения соответствующей команды cpio -o. Пользователь и группа-владелец устанавливается на основе текущего пользователя, если только это не пользователь root. В этом случае владельцы будут такие же, как были при выполнени соответствующей команды cpio -o. Учтите, что если команда cpio -i пытается создать файл, который уже существует, причем с той же датой изменения или более новый, команда cpio выдаст предупреждающее сообщение и не заменит этот файл. (Для безусловной перезаписи существующих файлов можно задать опцию -u.)
Режим копирования в архив

cpio -o (copy out) читает список имен файлов из входного потока и копирует эти файлы в стандартный выходной поток вместе с полным путем и информацией о состоянии. Результат по умолчанию дополняется до границы 8192-байтов или до указанного пользователем (с помощью опций -B или -C) размера блока, или, при необходимости, до специфического размера блока устройства (как в случае использования ленты CTC).
Режим передачи

cpio -p (pass) читает список имен файлов, которые при необходимости, в зависимости от описанных ниже опций, создаются и копируются в указанное целевое дерево каталогов.

Примечание: утилита cpio предполагает использование четырехбайтовых слов.

Если при записи на специальное символьное устройство (-o) или при чтении со специального символьного утсройства (-i) утилита cpio обнаружит конец носителя (например, конец дискеты), и не заданы опции -O и -I, cpio выдает следующее сообщение:

To continue, type device/file name when ready.
Для продолжения введите имя устройства/файла.

Для продолжения необходимо заменить носитель и ввести имя специального символьного устройства (например, /dev/rdiskette) и нажать клавишу Enter. Можно для продолжения архивирования задать cpio другое устройство. Например, при наличии двух дисководов, можно переключать архивирование с одного на другой, чтобы оно продолжалось, пока вы меняете дискету. (Если просто нажать клавишу Enter, процесс cpio завершает работу.)
ОПЦИИ

Поддерживаются следующие опции:
-i (copy in) cpio -i выбирает файлы из стандартного входного потока.
-o (copy out) cpio -o читает список имен файлов из стандартного входного потока и копирует их в стандартный выходной поток.
-p (pass) cpio -p читает список имен файлов из стандартного входного потока.

Следующие опции можно в любой последовательности добавлять к опциям -o, -i или -p:
-a Сбрасывает времена обращения к входным файлам после их копирования. Времена обращения не сбрасываются для связанных файлов при указании опций cpio -pla (взаимоисключающих с опцией -m).
-A Добавляет файлы в архив. Опция -A требует обязательного указания опции -O. Допустима только для архивов в файлах, на дискетах или на разделах жесткого диска.
-b Изменяет порядок байтов в каждом слове (Используется только с опцией -i.)
-B Выполняет ввод/вывод в виде блоков-записей по 5120 байтов. Если не указана эта опция и опция -C, используется стандартный размер блока - 8192 байтов. Опция -B не применима в режиме передачи; -B имеет смысл только при обмене данными со специальным символьным устройством, например, /dev/rmt/0m.
-c Читает и записывает информацию заголовка в форме ASCII-текста для переносимости. Этот формат заголовка не накладывает никаких ограничений на значения UID или GID. Эта опция используется при обмене архивами между SVR4-системами; для обмена между заранее неизвестными машинами имеет смысл использовать опцию -H odc. Опция -c предполагает использование расширенных номеров устройств, которые поддерживаются только в SVR4-системах. При переносе файлов между SunOS 4 или Interactive UNIX и ОС Solaris 2.6 или более поздиними версиями этой ОС используйте опцию -H odc.
-C размер_буфера Объединяет ввод/вывод в записи указанного размера (размер задается положительным целым числом). Стандартный размер буфера, если не указана эта опция и опция -B, - 8192 байта. Опция -C имеет смысл только если происходит обмен данными со специальным символьным устройством, например, /dev/rmt/0m.
-d Создает каталоги при необходимости.
-E файл Задает входной файл, содержащий список имен файлов, которые необходимо извлечь из архива (по одному имени в строке).
-f Копирует все файлы, за исключением соответствующих шаблону. (Описание шаблонов см. в разделе ОПЕРАНДЫ.)
-H формат Читает или записывает заголовок в указанном формате. Всегда используйте эту опцию или опцию -c, если исходная и целевая машины - разных типов (взаимоисключающих, как -c и -6). Допустимы следующие значения формата:
bar Заголовок и формат bar. Используется вместе с опцией -i (только для чтения).
crc|CRC Заголовок ASCII с расширенными номерами и дополнительной контрольной суммой для каждого файла. Этот формат заголовка не предполагает никаких ограничений на значения UID или GID.
odc Заголовок ASCII с небольшими номерами устройств. Этот заголовок и формат архива cpio соответствует стандарту IEEE/P1003 Data Interchange Standard. Это - наиболее переносимый из всех форматов заголовков. Этот формат официально принят для обмена файлами между системами, соответствующими стандарту POSIX (см. standards(5)). Используйте этот формат для обмена информацией с SunOS 4 и Interactive UNIX. Этот формат заголовка поддерживает хранение в заголовке идентификаторов UID и GID со значениями вплоть до 262143.
tar|TAR Заголовок и формат tar. Этот формат заголовка позволяет хранить в заголовке значения UID и GID со значениями вплоть до 2097151.
ustar|USTAR Заголовок и формат tar, соответствующий стандарту IEEE/P1003 Data Interchange Standard. Этот формат заголовка позволяет хранить в заголовке значения UID и GID со значениями вплоть до 2097151.

Файлы с идентификаторами UID и GID, большими указанного выше предела, попадают в архив как имеющие UID и GID 60001. Для переноса больших файлов (8 Гбайтов - 1 байт) можно использовать только заголовки фоматов tar/TAR, ustar/USTAR или odc.
-I файл Читает содержимое файла как входной архив. Если указан файл специального символьного устройства и текущий носитель полностью прочитан, замените носитель и нажмите клавишу Enter для чтения следующего носителя. Эта опция используется только совместно с опцией -i.
-k Пытается пропустить поврежденные заголовки файлов и игнорировать получаемые ошибки ввода/вывода. Если необходимо избирательно скопировать файлы с поврежденного носителя, эта опция позволяет прочитать файлы с неповрежденными заголовками. (Если архив cpio содержит другие архивы cpio, в случае ошибки cpio может закончить работу досрочно. cpio найдет следующий неповрежденный заголовок, и если это окажется заголовок вложенного архива, завершит работу, обнаружив признак завершения вложенного архива.) Используется только совместно с опцией -i.
-l По возможности связывает файлы, а не копирует их. (Используется только с опцией -p.)
-L Следует по символьным связям. По умолчанию утилита не следует по символьным связям.
-m Оставляет прежнее время изменения файла. Эта опция не действует для копируемых каталогов (эта опция и опция -a - взаимоисключающие).
-M сообщение Задает сообщение, выдаваемое при смене носителей. При задании специального символьного устройства в опциях -O или -I, эта опция позволяет задать сообщение, выдаваемое когда достигнут конец носителя. В сообщение можно один раз включить шаблон %d, заменяемый последовательным номером следующего носителя.
-O файл Направляет результат работы cpio в файл. Если файл является специальным символьным устройством и текущий носитель заполнен, замените носитель и нажмите клавишу Enter для продолжения работы со следующим носителем. Используется только с опцией -o.
-P Сохраняет списки контроля доступа (ACL). Если эта опция используется при выдаче информации, существующие списки ACL записываются вместе с другими атрибутами в стандартный выходной поток. Списки ACL создаются как специальные файлы соответствующего типа. Если опция задана при считывании информации, существующие в архиве списки ACL извлекаются вместе с другими атрибутами из стандартного входного потока. Опция распознает файлы соответствующего специального типа. Учтите, что при попытке извлечения файлов из архива со списками ACL предыдущими версиями cpio произойдет ошибка. Эту опцию не надо использовать вместе с опцией -c, поскольку списки ACL поддерживаются не во всех системах, и поэтоу не переносимы. Для обеспечения переносимости используйте заголовки ASCII.
-r Интерактивно переименовывает файлы. Если пользователь просто нажимает Enter, файл пропускается. Если пользователь вводит точку (.), оставляется исходное имя файла. (Опция не поддерживается для cpio -p.)
-R id Устанавливает пользователя id (и его первичную группу) в качестве владельца каждого файла (id должно быть одним из известных регистрационных имен в файле /etc/passwd). Эту опцию может задавать только пользователь root.
-s Переставляет байты в каждом полуслове.
-S Переставляет полуcлова в каждом слове.
-t Выдает содержимое входного архива. Никакие файлы при этом не создаются (эта опция взаимоисключающа с опцией -V).
-u Копирует безусловно (обычно старый файл не заменяет более новый с тем же именем).
-v Выдача дополнительной информации. Выдается список имен обрабатываемых файлов. При использовании с опцией -t , список имен файлов выглядит аналогично результатам команды ls -l (см. ls(1).)
-V Выдача дополнительной информации специального вида. Выдается точка для каждого прочитанного или записанного файла. Позволяет пользователю убедиться, что процесс cpio работает, не выдавая при этом имена всех файлов.
-6 Обрабатывает формат файла архива UNIX System Sixth Edition. Используется только совместно с опцией -i (взаимоисключающая опция по отношению к опциям -c и -H).
ОПЕРАНДЫ

Поддерживаются следующие операнды:
каталог Путь к существующему целевому каталогу для команды cpio -p.
шаблон Выражение с теми же метасимволами сопоставления с образцом, что и шаблоны имен файлов командного интерпретатора (подробнее о шаблонах имен файлов см. на странице sh(1)), функционально подобными регулярным выражениям. Поддерживаются следующие метасимволы:
* Соответствует любой строке, в том числе, пустой.
? Соответствует любому одиночному символу.
[...] Соответствует любому из указанных в квадратных скобках символов. Пара символов, разделенная дефисом (-), соответствует любому из символов диапазона (включительно с указанными), определяемого по стандартной кодовой таблице. Если сразу за открывающей скобкой ([) идет восклицательный знак (!), результаты будут неопределенными.
! Отрицание. (Например, шаблон !abc* исключает все файлы, имена которых начинаются с abc.)

В шаблонах метасимволы ?, * и [...] сопоставляются с символом косой черты (/), а символ обратной косой черты (\) является маскирующим. Можно задавать несколько шаблонов, а если шаблон не задан, предполагается шаблон * (т.е. выбираются все файлы).

Каждый шаблон необходимо брать в двойные кавычки, в противном случае, командный интерпретатор может подставить имена файлов текущего каталога.
ИСПОЛЬЗОВАНИЕ

Описание работы утилиты cpio с файлами, рамер которых превосходит 2 Гбайта (2**31 байтов) см. на странице справочного руководства largefile(5).
ПРИМЕРЫ

Следующие примеры показывают три варианта использования утилиты cpio.
Пример 1: Использование стандартного входного потока

Если стандартный входной поток формируется и направляется по программному каналу команде cpio -o, утилита группирует файлы так, что они могут быть перенаправлены (>) в один файл (../новый_файл). Опция -c гарантирует, что файл будет переносим на другие машины (как и опция -H). Вместо ls(1) можно использовать find(1), echo(1), cat(1) и любые другие команды, формирующие в стандартном выходном потоке список имен файлов для cpio. Результат можно перенаправить на устройство, а не в обычный файл.
example% ls | cpio -oc > ../новый_файл
Пример 2: Извлечение файлов в каталоги

cpio -i использует файлы архивы cpio -o (направленные через программный канал с помощью cat в примере ниже), извлекает из них файлы, соответствующие шиблону (memo/a1, memo/b*), создает при необходимости подкаталоги в текущем каталоге (опция -d), и пощает файлы в соответствующие каталоги. Опция -c используется, если архив был создан с переносимым заголовком. Если шаблоны не заданы, в каталог будут помещены все файлы из архива newfile.
example% cat newfile | cpio -icd "memo/a1" "memo/b*"
Пример 3: Копирование или связывание файлов в другой каталог

cpio -p принимает из стандартного входного потока список файлов и копирует или создает на них связи (опция -l) в другом каталоге (newdir в примере ниже). Опция -d требует создавать каталоги при необходимости. Опция -m требует оставлять время изменения файла. (При генерации списка полных имен файлов для cpio с помощью утилиты find(1) важно задавать опцию -depth. Это решает проблемы с попытками создания файлов в каталогах, доступных только для чтения.) Целевой каталог, newdir, должен существовать.
example% find . -depth -print | cpio -pdlmv newdir

Учтите, что при использовании утилиты cpio совместно с find, если задается опция -L для команды cpio, необходимо использовать опцию -follow для find, и наоборот. Иначе могут получиться нежелательные результаты.

При работе с многотомными архивами через несколько устройств демонтируйте старый том, смонтируйте новый и перейдите к следующей ленте, введя имя следующего устройства (даже если оно совпадает с предыдущим). Чтобы прекратить обработку томов нажмите клавишу Enter и cpio закончит работу.
ПЕРЕМЕННЫЕ СРЕДЫ

Описание следующих переменных среды, влияющих на работу cpio, см. на странице справочного руководства environ(5): LC_COLLATE, LC_CTYPE, LC_MESSAGES LC_TIME, TZ и NLSPATH.
СТАТУС ВЫХОДА

Программа завершается со следующими значениями статуса выхода:
0 Успешное завершение.
>0 Произошла ошибка.
АТРИБУТЫ

Описание следующих атрибутов см. на странице справочного руководства attributes(5):
ТИП АТРИБУТА ЗНАЧЕНИЕ АТРИБУТА
Доступен в пакете SUNWcsu
CSI включено
ССЫЛКИ

ar(1), cat(1), echo(1), find(1), ls(1), setfacl(1), sh(1), tar(1), vold(1M), archives(4), attributes(5), environ(5), largefile(5), standards(5)

ПРИМЕЧАНИЯ

Полные имена файлов не долны превышать 256 символов для двоичного (стандартного) формата заголовка и формата -B.

18.119.28.173 / 2024-12-22_20-11-40 UTC.