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

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

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

решение1

gzip -cd foo.cpio.gz | cpio -idmv
  • i : извлечение (вход)
  • d : создать каталоги
  • m : сохранить mtime
  • v : многословный

решение2

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), если вы извлекаете корневую файловую систему, содержащую узлы устройств.

решение3

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

решение4

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

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

Связанный контент