12

Я получил дистрибутив программного обеспечения Unix в виде сжатого файла cpio. Какая лучшая команда для извлечения файлов?

4 ответа4

11
gzip -cd foo.cpio.gz | cpio -idmv
  • я: извлечение (ввод)
  • d: создавать каталоги
  • m: сохранить mtime
  • V: многословный
3
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), если вы извлекаете корневую файловую систему, содержащую узлы устройства.

0

На этой странице Википедии на cpio есть несколько хороших заметок.
Для получения более подробной информации обратитесь к руководству по cpio.

Ссылка с той же страницы Википедии обсуждает сравнение с архивами tar.
И вот пример использования cpio с форматом tar.

0

Например, чтобы извлечь заархивированное содержимое /etc /httpd / в текущий каталог, создав подкаталоги ./etc/httpd/

mkdir restored-etc-httpd
cd restored-etc-httpd    
zcat archive.cpio.gz | cpio -idmv --no-absolute-filenames "*etc/httpd/*"

Принятый ответ и ответ Мэтта были мне полезны, но я на некоторое время был в тупике из-за трех деталей:

  1. Соответствующий шаблон должен быть заключен в кавычки, чтобы работать как шаблон:P
  2. Опция --no-absolute-filenames должна предшествовать шаблону в командной строке
  3. Так как эта опция удаляет ведущие / из имен файлов, соответствующий шаблон должен также опускать ведущие /

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .