cpio
Оригинальный автор(ы) | Дик Хейт |
---|---|
Разработчик(и) | AT&T Bell Laboratories |
Первоначальный выпуск | 1977 год |
Операционная система | Unix и Unix-подобные |
Тип | Команда |
Лицензия | GNU cpio: GPLv3 libarchive bsdcpio: новая лицензия BSD |
Расширение имени файла |
.cpio |
---|---|
Тип интернет-СМИ |
приложение/x-cpio |
Единый идентификатор типа (UTI) | public.cpio-archive |
Тип формата | Архив файлов |
cpio — это общая утилита архиватора файлов и связанный с ней формат файлов . В основном он устанавливается в Unix-подобных компьютерных операционных системах. Программная утилита изначально задумывалась как программа архивирования лент как часть Programmer's Workbench ( PWB/UNIX ) и была компонентом практически каждой операционной системы Unix, выпущенной после этого. Его название происходит от фразы copy in and out , подробно описывающей использование программой стандартного ввода и стандартного вывода в ее работе.
Все варианты Unix также поддерживают другие программы резервного копирования и архивирования, такие как tar , которая получила более широкое признание. [1] Использование cpio менеджером пакетов RPM , в initramfs ядра Linux Apple , начиная с версии 2.6, и в установщике ( pax ) делает cpio важным инструментом архивирования.
С момента своего первоначального дизайна cpio и формат его архивного файла претерпели несколько, иногда несовместимых, изменений. Наиболее примечательным является изменение, которое теперь является рабочей опцией, от использования двоичного формата метаинформации архивного файла к представлению на основе ASCII .
cpio был удален из POSIX.1-2001 в пользу pax , [2] аналогичная утилита, которая была представлена в предыдущей версии стандарта.
История
[ редактировать ]cpio появился в версии 7 Unix как часть проекта Programmer's Workbench . [3]
Формат работы и архива
[ редактировать ]cpio изначально был разработан для последовательного и непрерывного хранения файловых архивов резервных копий на ленточном устройстве. Он не сжимает какой-либо контент, но полученные архивы часто сжимаются с помощью gzip или других внешних компрессоров.
Создание архива
[ редактировать ]При создании архивов во время операции копирования , инициированной командой -o флаг командной строки, cpio считывает имена путей к файлам и каталогам из своего стандартного канала ввода и записывает результирующий поток байтов архива в свой стандартный вывод. Поэтому Cpio обычно используется с другими утилитами, которые создают список файлов для архивирования, например с программой find .
Результирующий архив cpio представляет собой последовательность файлов и каталогов, объединенных в один архив, разделенных разделами заголовков с метаинформацией файла, такой как имя файла, номер индексного дескриптора, право собственности, разрешения и временные метки. По соглашению имя файла архива обычно имеет расширение cpio .
В этом примере используется утилита find для создания списка имен путей, начиная с текущего каталога, для создания архива дерева каталогов:
$ find . -depth -print | cpio -o > /path/archive.cpio
Добыча
[ редактировать ]Во время операции копирования , инициируемой флагом командной строки i , cpio считывает архив со своего стандартного ввода и воссоздает заархивированные файлы в файловой системе операционной системы.
$ cpio -i -vd < archive.cpio
Флаг командной строки d сообщает cpio создавать каталоги по мере необходимости. Флаг v ( verbose ) перечисляет имена файлов в том виде, в каком они были извлечены.
Любые оставшиеся аргументы командной строки, кроме флагов опций, представляют собой подстановки, подобные оболочке шаблоны ; Из архива копируются только файлы с совпадающими именами. В следующем примере извлекается файл /etc/fstab из архива:
$ cpio -i -d /etc/fstab < archive.cpio
Список
[ редактировать ]Файлы, содержащиеся в архиве cpio, можно просмотреть с помощью этого вызова:
$ cpio -t < archive.cpio
Список может быть полезен, поскольку архив cpio может содержать абсолютные, а не относительные пути (например, /bin/ls или bin/ls ).
Копировать
[ редактировать ]Cpio поддерживает третий тип операций копирования файлов . Он инициируется с помощью флага опции сквозной передачи ( п ). Этот режим объединяет этапы копирования и копирования без фактического создания файлового архива. В этом режиме cpio считывает имена путей со стандартного ввода, как и операция копирования , но вместо создания архива он воссоздает каталоги и файлы в другом месте файловой системы, как указано в пути, указанном в командной строке. аргумент.
В этом примере дерево каталогов копируется, начиная с текущего каталога, в другой путь new-path в файловой системе, сохраняя время изменения файлов (флаг m ), создавая каталоги по мере необходимости ( d ), безоговорочно заменяя любые существующие файлы ( u ), создавая список прогресса на стандартном выходе ( v ):
$ find . -depth -print | cpio -p -dumv new-path
Стандартизация POSIX
[ редактировать ]Утилита cpio стандартизирована в POSIX .1-1988, но не включена в POSIX.1-2001 из-за размера файла и других ограничений. Например, версия GNU предлагает различные варианты формата вывода, такие как «bin» (по умолчанию и устаревший) и «ustar» (POSIX tar), имеющие ограничения на размер файла в 2 147 483 647 байт (2 ГБ) и 8 589 934 591 байт (8 ГБ). ), соответственно. [4]
Форматы файлов cpio, ustar и pax определены стандартом POSIX.1-2001 для утилиты pax , которая в настоящее время совместима с POSIX 1003.1-2008 и поэтому может читать и записывать архивы в форматах cpio и ustar.
Реализации
[ редактировать ]Большинство дистрибутивов Linux предоставляют версию GNU. cpio
. [5] FreeBSD и macOS используют лицензию BSD. bsdcpio
поставляется с лиархивом . [6]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Пик, Дж; О'Рейли, Т; Лукидес, М (1997). Электроинструменты Unix . O'Reilly & Associates, Inc. с. 38.13. ISBN 1-565-92260-3 .
- ^ «Обоснование» . pubs.opengroup.org . Проверено 18 июля 2024 г.
- ^ Макилрой, доктор медицины (1987). Читатель Research Unix: аннотированные выдержки из Руководства программиста, 1971–1986 (PDF) (Технический отчет). CSTR. Лаборатории Белла. 139.
- ^ cpio информационный документ , в узле «Параметры» , страница руководства bsdcpio.
- ^ "Цпио" . GNU.org.
- ^ «лиархив» .
Внешние ссылки
[ редактировать ]- cpio в Единой спецификации UNIX®, версия 2, 1997, opengroup.org – указывает, что приложения следует перейти на утилиту pax.
- C.4 Утилиты в базовых спецификациях Open Group, выпуск 6, издание 2004 г., opengroup.org – указывает, что cpio удален
- – 8-е издание Unix Bell Labs
- — руководство от GNU
- Solaris 11.4 по пользовательским командам Справочное руководство –
- FreeBSD по основным командам Руководство –
- OpenBSD по общим командам Руководство –
- Debian по основным командам Руководство –