Базовая команда извлечения cpio, эквивалент 'tar xzvf'?

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

4 ответа

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

Например, чтобы извлечь архивное содержимое / 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. Поскольку этот параметр удаляет ведущие / из имен файлов соответствующий шаблон должен также опускать ведущие /

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

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

Другие вопросы по тегам