CPIO архив

Архивация cpio по сути представляет собой поток файлов и каталогов в единый архив, зачастую получающий расширение .cpio. Архив имеет заголовочную информацию, позволяющую приложению, такому, как например, GNU cpio, извлекать файлы и каталоги в файловую систему. Заголовок архива cpio также содержит дополнительную информацию, как например, имя файла, время создания, владельца и права доступа (разрешения).
cpio-архив по функциональности схож с tar-архивом и создавался для хранения бэкапов на ленточных устройствах (например, стримерах) последовательным способом. Как и формат tar, CPIO-архивы часто сжимаются при помощи Gzip и поставляются в виде файлов с расширением .cpgz (или .cpio.gz).
Oracle поставляет значительную часть своего программного обеспечения в формате cpio.

Использование cpio

Архивация

Если вы хотите заархивировать целиком дерево каталогов (перед этим: cd нужная папка), то команда find может передать список файлов и папок в cpio:
% find ./* | cpio -o > tree.cpio

Копирование

Cpio копирует файлы из одного дерева каталогов в другой при этом сочетая шаги copy-out и copy-in без «настоящего» использования архивации. Она считывает список файлов для копирования из стандартного потока ввода; целевой каталог, в который их нужно скопировать, указывается как обязательный аргумент.

% find . -depth -print0 | cpio --null -pvd new-dir

Извлечение

Для извлечения файлов из cpio-архива, передайте имя архива утилите cpio через стандартный ввод.
Внимание! Это произведёт перезапись файлов без подтверждения!

% cpio -id < cpiofile

Флаг -i указывает cpio считать архив для извлечения файлов, а флаг -d говорит cpio создать при необходимости соответствующие каталоги. Вы также можете указать флаг -v для вывода списка имён извлечённых файлов.
Все дополнительные аргументы командной строки являются shell-образными glob-шаблонами; только те файлы в архиве, чьи имена совпадают по крайней мере с одним шаблоном, могут быть скопированы из архива. В следующем примере извлекается etc/fstab из архива (формат содержимого архива должен сначала проверяться командой `cpio -l` для проверки того, как хранится путь) :

% cpio -id etc/fstab < cpiofile

Как распаковать архив, созданный CPIO и GZIP

gzip -dc file.cpio.gz | cpio -idm

В чём разница между CPIO и TAR

Хорошее описание про различие между этими программами:

https://superuser.com/questions/343915/what-is-the-difference-between-tar-vs-cpio-archive-file-formats

Если коротко, то tar — это команда «всё в одном», которая умеет заархивировать файлы из каталога и сразу запаковать их.

cpio полагается на использование внешней команды find, результат которой будет использован в качестве списка файлов для помещения в архив. Для упаковки архива также нужна внешняя команда.

При этом команда для запуска выглядит более сложной, предоставляя больше гибкости.

$ find myfiles -depth -print0 | cpio -ovc0 | gzip -7 > myfiles.cpio.gz
$ tar czvf myfiles.tar.gz myfiles

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *