CPIO(1) 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 байт.
CPIO(4) CPIO(4)
НАЗВАНИЕ
cpio - формат архива cpio
ОПИСАНИЕ
Если при запуске cpio(1) не используется опция -c, то
заголовок файла имеет следующую структуру:
struct {
short h_magic,
h_dev;
ushort h_ino,
h_mode,
h_uid,
h_gid;
short h_nlink,
h_rdev,
h_mtime [2],
h_namesize,
h_filesize [2];
char h_name [h_namesize округленное до слова];
} Hdr;
Если опция -c используется, то заголовок файла описыва-
ется следующим образом:
sscanf(Chdr,"%6o%6o%6o%6o%6o%6o%6o%6o%11lo%6o%11lo%s",
&Hdr.h_magic, &Hdr.h_dev, &Hdr.h_ino, &Hdr.h_mode,
&Hdr.h_uid, &Hdr.h_gid, &Hdr.h_nlink, &Hdr.h_rdev,
&Longtime, &Hdr.h_namesize,&Longfile,Hdr.h_name);
Longtime и Longfile эквивалентны полям Hdr.h_mtime и
Hdr.h_filesize соответственно. Содержимое каждого файла
вместе с другими элементами, описывающими файл, помеща-
ется в элемент массива структур переменной длины. Каж-
дое вхождение h_magic содержит восьмеричную константу
070707. Поля от h_dev до h_mtime имеют тот же смысл,
что и одноименные элементы stat(2). Длина заканчивающе-
гося нулем маршрутного имени h_name, включая и нулевой
байт, хранится в h_namesize.
Именем последнего элемента архива всегда служит
TRAILER!!!. Специальные файлы, каталоги и последний
элемент всегда сохраняются с полем h_filesize, равным
нулю.
СМ. ТАКЖЕ
stat(2).
cpio(1), find(1) в Справочнике пользователя.
|