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 приписан следующий смысл:
-p
и имеет смысл, только если ввод/вывод происходит на специальное символьное устройство (например /dev/mt).-p
.cpio
. Никакие файлы не создаются.ls -l
[см. LS(1) ].-p
.cpio
смысл опции -m
противоположен ее смыслу в команде tar
.-i
.-S
используется только с опцией -i
.-i
.-i
.
Если в процессе записи на специальное символьное устройство (опция -o
) или чтения с него (опция -i
) кончился физический носитель (например, дискета), команда cpio
выводит сообщение:
If you want to go on, type device/file name when ready.
Чтобы продолжить, Вы должны заменить носитель и ввести имя специального символьного устройства (например, /dev/rdsk/fd
) и символ возврат_каретки. Можно продолжить, указав для cpio
другое устройство. Например, если Вы имеете два дисковода для гибких дисков, можно указывать их по очереди, чтобы cpio
выводил на другой дисковод, пока Вы будете менять дискету. (Один символ возврат_каретки заставляет cpio
окончить работу.)
cpio -o
через канал, то команда cpio
группирует файлы, так что они могут быть направлены (>
) в один файл (../newfile
). Вместо ls
Вы можете использовать команды find
, echo
, cat
, и т.д., чтобы подать список имен в cpio
. Можно назначить вывод на устройство, а не в файл.ls | cpio -o >../newfile
cpio -i
использует выходной файл cpio -o
(в данном примере направленный через канал вывод команды cat
), выбирает оттуда те файлы, которые соответствуют шаблонам (memo/a1
, memo/b*
), создает каталоги, если это нужно (опция -d
), и помещает файлы в соответствующие каталоги. Если шаблоны не указаны, то все файлы из newfile
будут размещены в текущем каталоге.cat newfile | cpio -id "memo/a1" "memo/b*"
cpio -p
берёт имена файлов и копирует эти файлы в другой каталог (в примере newdir
) на этом же компьютере или заводит на них еще одну ссылку (опция -l
). Опция -d
позволяет создавать новые каталоги в случае необходимости. Опция -m
предписывает сохранить время последней модификации. (Очень важно использовать опцию -depth
в команде find
при генерации маршрутных имен для cpio
. Эта опция заставит find
перечислять файлы, содержащиеся в каталоге, раньше чем сам каталог и исключит ситуацию, когда cpio
скопирует каталог, в который по правам доступа нельзя писать, вместе с этим правом, а затем не сможет перенести в него файлы.)find . -depth -print | cpio -pdlmv newdir
Маршрутные имена обрезаются до 256 символов.
Только суперпользователь может копировать специальные файлы.
Количество блоков сообщается в предположении, что размер блока равен 512 байт.