Я получил дистрибутив программного обеспечения Unix в виде сжатого файла cpio. Какая лучшая команда для извлечения файлов?
Я получил дистрибутив программного обеспечения Unix в виде сжатого файла cpio. Какая лучшая команда для извлечения файлов?
Ответы:
gzip -cd foo.cpio.gz | cpio -idmv
mkdir archive
cd archive
zcat ../archive.cpio.gz | cpio -idmv --no-absolute-filenames
Хотя это старый вопрос, он показывается высоко в Google, поэтому я подумал, что могу его обновить. Я в целом согласен с принятым ответом, но вы должны добавить «--no-absolute-filenames», если вы не собираетесь перезаписывать важные системные файлы на вашем компьютере. Кроме того, лично я предпочитаю "zcat", а не "gzip -cd" или "gunzip -c".
Наконец, обратите внимание, что вам нужно запустить cpio от имени root (например, sudo), если вы извлекаете корневую файловую систему, которая содержит узлы устройств.
На этой странице Википедии cpio
есть несколько хороших заметок.
Для получения более подробной информации обратитесь к cpio
руководству .
Ссылка с той же страницы Википедии обсуждает сравнение с tar
архивами .
И вот пример использования cpio
с tar
форматом .
Например, чтобы извлечь архивное содержимое / etc / httpd / в текущий каталог, создав подкаталоги ./etc/httpd/
mkdir restored-etc-httpd
cd restored-etc-httpd
zcat archive.cpio.gz | cpio -idmv --no-absolute-filenames "*etc/httpd/*"
Принятый ответ и ответ Мэтта были мне полезны, но я на некоторое время был в тупике из-за трех деталей:
--no-absolute-filenames
должна предшествовать шаблону в командной строке/
из имен файлов, соответствующий шаблон должен также опускать ведущие/
man cpio
то, что увидел?