Введение
Формат файла cpio — это универсальная утилита для архивирования файлов и соответствующий формат файла. Она в основном устанавливается на Unix-подобные компьютерные операционные системы. Изначально программная утилита была разработана как программа для архивирования на магнитную ленту в составе Программистской рабочей станции (PWB/UNIX) и впоследствии стала компонентом практически каждой выпущенной операционной системы Unix. Название происходит от фразы "copy in and out" (копировать внутрь и наружу), точно описывающей использование программой стандартного ввода и стандартного вывода в процессе работы. Все варианты Unix также поддерживают другие программы для резервного копирования и архивирования, такие как tar, которая получила более широкое распространение. Использование cpio в менеджере пакетов RPM, в initramfs ядра Linux начиная с версии 2.6 и в программе установки Apple (pax) делает cpio важным инструментом архивирования. С момента первоначальной разработки cpio и его формат архивных файлов претерпели несколько, иногда несовместимых, изменений. Наиболее заметным является переход, теперь реализованный как опция, от использования бинарного формата метаданных архивного файла к представлению на основе ASCII. Стандарт POSIX отказался от поддержки cpio в пользу pax.
cpio is a general file archiver utility and its associated file format. It is primarily installed on Unix like computer operating systems. The software utility was originally intended as a tape archiving program as part of the Programmer's Workbench (PWB/UNIX), and has been a component of virtually every Unix operating system released thereafter. Its name is derived from the phrase copy in and out, in close description of the program's use of standard input and standard output in its operation. All variants of Unix also support other backup and archiving programs, such as tar, which has become more widely recognized. The use of cpio by the RPM Package Manager, in the initramfs of the Linux kernel since version 2.6, and in Apple's Installer (pax) make cpio an important archiving tool. Since its original design, cpio and its archive file format have undergone several, sometimes incompatible, revisions. Most notable is the change, now an operational option, from the use of a binary format of archive file meta information to an ASCII based representation. The POSIX standard abandoned cpio in favor of pax.
История
cpio впервые появился в Unix версии 7 как часть проекта Programmer's Workbench.
Формат работы и архива
cpio изначально был разработан для хранения резервных копий файлов в архивах на ленточном накопителе последовательным, непрерывным образом. Он не выполняет сжатие данных, но результирующие архивы часто сжимаются с помощью gzip или других внешних программ сжатия.
Экстракция
Во время операции копирования, инициированной флагом командной строки, cpio считывает архив из стандартного ввода и воссоздает архивированные файлы в файловой системе операционной системы. Например: $ cpio i vd < archive.cpio.
Флаг командной строки -t указывает cpio создавать необходимые каталоги. Флаг -v (подробный режим) выводит имена файлов по мере их извлечения. Любые оставшиеся аргументы командной строки, отличные от флагов опций, являются шаблонами globbing, как в оболочке; из архива копируются только файлы с совпадающими именами. Следующий пример извлекает файл /etc/fstab из архива:
$ cpio i d /etc/fstab < archive.cpio.
Command line flag tells cpio to construct directories as necessary. Flag (verbose) lists file names as they are extracted. Any remaining command line arguments other than the option flags are shell like globbing patterns; only files in the archive with matching names are copied from the archive. The following example extracts the file /etc/fstab from the archive:
$ cpio i d /etc/fstab < archive. cpio
Стандартизация POSIX
Утилита cpio была стандартизирована в POSIX.1 1988, но была исключена из POSIX.1 2001 из-за ограничений по размеру файлов и других недостатков. Например, версия GNU предлагает различные варианты формата вывода, такие как "bin" (по умолчанию, но устаревший) и "ustar" (POSIX tar), с ограничениями на размер файла в 2 147 483 647 байт (2 ГБ) и 8 589 934 591 байт (8 ГБ) соответственно. Форматы файлов cpio, ustar и pax определены в POSIX.1 2001 для утилиты pax, которая в настоящее время соответствует стандарту POSIX 1003.1 2008, и поэтому может читать и записывать архивы в форматах cpio и ustar.
Реализация
Большинство дистрибутивов Linux предоставляют версию cpio от GNU. FreeBSD и macOS используют bsdcpio, распространяемый с libarchive под лицензией BSD.