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 байт.