CPIO(1)

НАЗВАНИЕ
cpio - архивизация и извлечение, а также копирование файлов

СИНТАКСИС


cpio  -o [-a] [-c] [-B] [-v]



cpio  -i [-B] [-c] [-d] [-m] [-r] [-t] [-u] [-v] [-f] [-s] [-S] [-b] [-6

  [шаблон ...]



cpio  -p [-a] [-d] [-l] [-m] [-u] [-v] каталог

ОПИСАНИЕ
Команда cpio -o (архивизация) читает со стандартного ввода список маршрутных имен и копирует эти файлы на стандартный вывод вместе с маршрутными именами и информацией о файлах. Вывод дополняется до размера, кратного 512 байт.

Команда cpio -i (извлечение) выделяет отдельные файлы из стандартного ввода, который, как предполагается, является результатом работы cpio -o. Извлекаются только файлы, имена которых соответствуют хотя бы одному из указанных шаблонов, построенных по принятым в shell'е правилам для генерации имен файлов. Символу / могут соответствовать в шаблоне метасимволы ?, *, и [...]. Может быть указано несколько шаблонов, а если не указано ни одного, то по умолчанию шаблоном будет * (то есть будут извлечены все файлы). Каждый шаблон должен быть окружен двойными кавычками. Извлекаемые файлы создаются и копируются в текущее дерево каталогов в соответствии с описанными ниже опциями. Режим доступа к файлу будет тем же, что при выполнении команды cpio -o. Владелец файла и группа будут взяты у текущего пользователя, если он не суперпользователь, в противном случае cpio сохранит владельца и группу файла, которые он имел при выполнении команды cpio -o.

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

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

Опциям команды cpio приписан следующий смысл:
-aНе изменять время последнего доступа к исходному файлу при его копировании.
-BУстановить размер блока равным 5120 байт. Эта опция не применяется с опцией -p и имеет смысл, только если ввод/вывод происходит на специальное символьное устройство (например /dev/mt).
-dСоздавать каталоги в случае необходимости.
-cЗаголовки файлов записывать в виде ASCII-символов. Настоятельно рекомендуется использовать эту опцию, если файлы переносятся на компьютер другого типа.
-rИнтерактивно переименовывать файлы. Для каждого извлекаемого файла у пользователя запрашивается новое имя, а если пользователь ответил пустой строкой, то файл пропускается. Опция не применяется с опцией -p.
-tВывести оглавление архива, ранее созданного с помощью команды cpio. Никакие файлы не создаются.
-uБезусловно заменять существующий файл архивным с тем же именем (обычно старый файл не заменяет файл, изменявшийся позднее).
-vВывести список имен обработанных файлов. Если использована опция -t, то оглавление выглядит как вывод команды ls -l [см. ls(1)].
-lВезде, где это возможно, не копировать файлы, а создавать ссылки. Эта опция употребляется только с опцией -p.
-mСохранять прежнее время последней модификации (то есть то время, которое указано в заголовке файла). При отсутствии этой опции время последней модификации устанавливается равным текущему времени. Эта опция не действует на время последней модификации скопированных каталогов. Заметим, что в команде cpio смысл опции -m противоположен ее смыслу в команде tar.
-fИзвлекать все файлы, кроме тех, имена которых соответствуют шаблонам.
-sПереставлять байты в каждой половине слова. Эта опция используется только с опцией -i.
-SПереставлять половины слов в слове. Предполагается, что слово содержит четыре байта. Опция -S используется только с опцией -i.
-bПорядок байт в слове изменять на противоположный. Используется только с опцией -i.
-6Обрабатывать старые файлы. Имеет смысл только с опцией -i.

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


If you want to go on, type device/file name when ready.

Чтобы продолжить, Вы должны заменить носитель и ввести имя специального символьного устройства (например, /dev/rdsk/fd) и символ возврат_каретки. Можно продолжить, указав для cpio другое устройство. Например, если Вы имеете два дисковода для гибких дисков, можно указывать их по очереди, чтобы cpio выводил на другой дисковод, пока Вы будете менять дискету. (Один символ возврат_каретки заставляет cpio окончить работу.)

ПРИМЕРЫ

  1. Если стандартный ввод поступает в cpio -o через канал, то команда cpio группирует файлы, так что они могут быть направлены (>) в один файл (../newfile). Вместо ls Вы можете использовать команды find, echo, cat, и т.д., чтобы подать список имен в cpio. Можно назначить вывод на устройство, а не в файл.
    
    ls | cpio -o >../newfile
    
    
  2. Команда cpio -i использует выходной файл cpio -o (в данном примере направленный через канал вывод команды cat), выбирает оттуда те файлы, которые соответствуют шаблонам (memo/a1, memo/b*), создает каталоги, если это нужно (опция -d), и помещает файлы в соответствующие каталоги. Если шаблоны не указаны, то все файлы из newfile будут размещены в текущем каталоге.
    
    cat newfile | cpio -id "memo/a1" "memo/b*"
    
    
  3. Команда cpio -p берет имена файлов и копирует эти файлы в другой каталог (в примере newdir) на этом же компьютере или заводит на них еще одну ссылку (опция -l). Опция -d позволяет создавать новые каталоги в случае необходимости. Опция -m предписывает сохранить время последней модификации. (Очень важно использовать опцию -depth в команде find при генерации маршрутных имен для cpio. Эта опция заставит find перечислять файлы, содержащиеся в каталоге, раньше чем сам каталог и исключит ситуацию, когда cpio скопирует каталог, в который по правам доступа нельзя писать, вместе с этим правом, а затем не сможет перенести в него файлы.)
    
    find . -depth -print | cpio -pdlmv newdir
    
    

СМ. ТАКЖЕ
ar(1), find(1), ls(1), tar(1).
cpio(4) в Справочнике программиста.

ПРИМЕЧАНИЯ
Маршрутные имена обрезаются до 256 символов.

Только суперпользователь может копировать специальные файлы.

Количество блоков сообщается в предположении, что размер блока равен 512 байт.