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 окончить работу.)
ПРИМЕРЫ
- Если стандартный ввод поступает в 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
СМ. ТАКЖЕ
ar(1), find(1), ls(1), tar(1).
cpio(4) в Справочнике программиста.
ПРИМЕЧАНИЯ
Маршрутные имена обрезаются до 256 символов.
Только суперпользователь может копировать специальные
файлы.
Количество блоков сообщается в предположении, что размер блока равен 512 байт.