Cpio - Cpio

cpio
Оригинальный автор (ы)Дик Хейт
Разработчики)AT&T Bell Laboratories
Операционная системаUnix и Unix-подобный
ТипКоманда
cpio
Расширение имени файла
.cpio
Тип интернет-СМИ
приложение / x-cpio
Единый идентификатор типа (UTI)public.cpio-archive
Тип форматаФайловый архиватор

cpio генерал файловый архиватор полезность и связанные с ней формат файла. Он в основном устанавливается на Unix-подобный компьютерные операционные системы. В программная утилита изначально задумывался как программа архивирования магнитной ленты как часть Programmer's Workbench (PWB / UNIX ), и был компонентом практически каждой операционной системы Unix, выпущенной после этого. Его название происходит от фразы копировать в и из, в подробном описании использования программой стандартный ввод и стандартный вывод в его эксплуатации.

Все варианты Unix также поддерживают другие программы резервного копирования и архивирования, такие как деготь, который получил более широкое признание.[1] Использование cpio Менеджер пакетов RPM, в initramfs программа Ядро Linux 2.6, а в Apple Установщик (человек ) сделать cpio важным инструментом архивирования.

С момента своего первоначального дизайна cpio и его формат архивных файлов претерпели несколько, иногда несовместимых, изменений. Наиболее примечательным является изменение, теперь уже действующее, от использования двоичного формата метаинформации архивного файла до ASCII -представительство.

История

cpio появился в Версия 7 Unix как часть Верстак программиста проект.[2]

Формат работы и архива

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

Создание архива

При создании архивов во время копия операция, инициированная флаг командной строки, cpio считывает пути к файлам и каталогам из своего стандартного входного канала и записывает результирующий поток байтов архива в свой стандартный вывод. Поэтому Cpio обычно используется с другими утилитами, которые генерируют список файлов для архивирования, такими как найти программа.

Результирующий архив cpio представляет собой последовательность файлов и каталогов, объединенных в один архив, разделенных разделами заголовка с метаинформацией файла, такой как имя файла, номер inode, право собственности, разрешения и временные метки. По соглашению, имя файла архива обычно имеет расширение файла. cpio.

В этом примере используется найти утилита для создания списка имен путей, начинающихся в текущем каталоге, для создания архива дерева каталогов:

$ найти . -глубина -принт | cpio -o> /path/archive.cpio

Добыча

Вовремя копия операция, инициированная флагом командной строки я, cpio считывает архив со стандартного ввода и воссоздает заархивированные файлы в файловой системе операционной системы.

$ cpio -i -vd 

Флаг командной строки d указывает cpio создавать каталоги по мере необходимости. Флаг v (подробный) перечисляет имена файлов по мере их извлечения.

Любые оставшиеся аргументы командной строки, кроме флагов параметров, похожи на оболочку шарик -выкройки; из архива копируются только файлы в архиве с совпадающими именами. В следующем примере извлекается файл / etc / fstab из архива:

$ cpio -i -d / etc / fstab 

Список

Файлы, содержащиеся в архиве cpio, могут быть перечислены с помощью этого вызова:

$ cpio -t 

Список может быть полезен, поскольку архив cpio может содержать абсолютные, а не относительные пути (например, / bin / ls против. bin / ls).

Копировать

Cpio поддерживает третий тип операций: копирует файлы. Он инициируется пройти через флаг опции (п). Этот режим объединяет этапы копирования и копирования без фактического создания файлового архива. В этом режиме cpio считывает имена путей на стандартном вводе, например копия операции, но вместо создания архива он воссоздает каталоги и файлы в другом месте файловой системы, как указано в пути, заданном в качестве аргумента командной строки.

В этом примере копируется дерево каталогов, начиная с текущего каталога, по другому пути. новый путь в файловой системе, сохраняя время модификации файлов (флаг м), создавая каталоги по мере необходимости (d), безоговорочно заменяя любые существующие файлы (ты), при создании списка выполнения на стандартный вывод (v):

$ найти . -глубина -принт | cpio -p -dumv новый путь

Стандартизация POSIX

В cpio утилита стандартизирована в POSIX.1-1988, но был исключен из POSIX.1-2001 из-за ограничений размера файла (и других). Например, версия GNU предлагает различные варианты выходного формата, такие как «bin» (по умолчанию и устаревший) и «ustar» (POSIX tar), с ограничениями на размер файла 2147483647 байтов (2 ГБ) и 8 589 934 591 байт (8 ГБ). ), соответственно.[3]

Форматы файлов cpio, ustar и pax определены POSIX.1-2001 для человек утилита, которая в настоящее время POSIX 1003.1-2008 совместимый, и поэтому он может читать и записывать архивы в формате cpio и ustar.

Реализации

Наиболее Дистрибутивы Linux предоставить версию GNU cpio.[4] FreeBSD и macOS использовать лицензированный BSD bsdcpio обеспечены libarchive.[5]

Смотрите также

Рекомендации

  1. ^ Пик, Дж; О'Рейли, Т; Лукидес, М. (1997). Unix Power Tools. O'Reilly & Associates, Inc. стр. 38.13. ISBN  1-565-92260-3.
  2. ^ Макилрой, М.Д. (1987). Читатель Research Unix: аннотированные выдержки из Руководства программиста, 1971–1986 (PDF) (Технический отчет). CSTR. Bell Labs. 139.
  3. ^ cpio Информация документ в Опции узел, страница руководства bsdcpio
  4. ^ «Cpio». GNU.org.
  5. ^ "libarchive".