Автор (ы) оригинала | Дик Хейт |
---|---|
Разработчик (и) | ATT Bell Laboratories |
Операционная система | Unix и Unix-like |
Тип | Команда |
Расширение имени файла | .cpio |
---|---|
Тип Интернет-носителя | приложение / x-cpio |
Uniform Type Identifier (UTI) | public.cpio-archive |
Тип формата | Файловый архиватор |
cpio - это общая утилита архиватора файлов и связанный с ним формат файла. Он в основном устанавливается в Unix-подобных компьютерных операционных системах. Программная утилита изначально задумывалась как программа архивирования на магнитной ленте как часть Programmer's Workbench (PWB / UNIX ) и был компонентом практически каждой операционной системы Unix Тем, выпущенный после этого. Его название происходит от фразы «копировать внутрь и обратно», что является подробным описанием использования программой стандартного ввода и стандартного вывода в своей работе.
Все варианты Unix также поддерживают другие программы резервного копирования и архивирования, такие как tar, получивший более широкое признание. Использование cpio в диспетчере пакетов RPM, в программе initramfs в ядре Linux 2.6 и в Installer от Apple (pax ) делают cpio важным инструментом архивирования.
С момента своего первоначального дизайна, cpio и его формат файлов архива претерпели несколько, иногда несовместимых, исправлений. Наиболее примечательным является изменение, теперь уже действующее, от использования двоичного формата метаинформации архивного файла к представлению на основе ASCII.
cpio появился в версии 7 Unix как часть проекта Programmer's Workbench.
cpio изначально был разработан для хранения архивов файлов резервных копий на ленточном устройстве в последовательном, непрерывном виде. Он не сжимает содержимое, но получаемые архивы часто сжимаются с помощью gzip или других внешних компрессоров.
При создании архивов во время операции копирования, инициированной с помощью флага командной строки -o, cpio считывает имена путей к файлам и каталогам из своего стандартного входного канала и записывает полученный поток байтов архива на стандартный вывод. Поэтому Cpio обычно используется с другими утилитами, которые генерируют список файлов для архивации, такими как программа find.
Результирующий архив cpio представляет собой последовательность файлов и каталогов, объединенных в один архив, разделенных разделами заголовка с метаинформацией файла, такой как имя файла, номер inode, право собственности, разрешения и временные метки. По соглашению имя файла архива обычно имеет расширение cpio.
В этом примере утилита find используется для создания списка имен путей, начиная с текущего каталога, для создания архива дерева каталогов:
$ find. -глубина-отпечаток | cpio -o>/path/archive.cpio
Во время операции копирования, инициированной флагом командной строки i, cpio считывает архив со стандартного ввода и воссоздает заархивированные файлы в файловой системе операционной системы.
$ cpio -i -vd < archive.cpio
Флаг командной строки d сообщает cpio о необходимости создания каталогов. Флаг v (подробный) отображает имена файлов по мере их извлечения.
Любые оставшиеся аргументы командной строки, кроме флагов опций, похожи на подстановочные шаблоны оболочки; из архива копируются только файлы в архиве с совпадающими именами. В следующем примере из архива извлекается файл / etc / fstab :
$ cpio -i -d / etc / fstab < archive.cpio
Файлы, содержащиеся в архиве cpio могут быть перечислены с помощью этого вызова:
$ cpio -t < archive.cpio
Список может быть полезен, поскольку архив cpio может содержать абсолютные, а не относительные пути (например, / bin / ls vs. bin / ls).
Cpio поддерживает третий тип операции, которая копирует файлы. Он инициируется флагом опции передачи (p). Этот режим объединяет шаги копирования и копирования без фактического создания файлового архива. В этом режиме cpio считывает имена путей из стандартного ввода, как операция копирования, но вместо создания архива он воссоздает каталоги и файлы в другом месте в файловой системе, как указано в пути, заданном в командной строке. аргумент.
Этот пример копирует дерево каталогов, начиная с текущего каталога, в другой путь new-path в файловой системе, сохраняя время модификации файлов (флаг m), создавая каталоги по мере необходимости (d), безоговорочно заменяя любые существующие файлы (u), при этом выводя список выполнения на стандартный вывод (v):
$ find. -глубина-отпечаток | cpio -p -dumv new-path
Утилита cpio стандартизирована в POSIX.1-1988, но была исключена из POSIX.1-2001 из-за своего файла размер (и другие) ограничения. Например, версия GNU предлагает различные варианты формата вывода, такие как «bin» (по умолчанию и устаревшие) и «ustar» (POSIX tar), с ограничениями на размер файла в 2147 483 647 байт (2 ГБ) и 8 589 934 591 байт (8 ГБ).) соответственно.
Форматы файлов cpio, ustar и pax определены в стандарте POSIX.1-2001 для утилиты pax, которая в настоящее время совместима с POSIX 1003.1-2008, и поэтому она может читать и писать архивы в формате cpio и ustar.
Большинство дистрибутивов Linux предоставляют версию GNU cpio
. FreeBSD и macOS используйте лицензированный BSD bsdcpio
, поставляемый с libarchive.