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

13839
Mark Harrison

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

11
Когда ты сделал "man cpio", что ты видел? 15 лет назад 0
Я вижу: -i -o -p -t -B -c -C -f -F -H -M -n -v -V -W -b -r -s -S -E -A -O -l - 0 -a -I -L -R -d -m -u -? --extract --create --pass-through --list --block-size = --io-size = --force-local --nonmatching --file = --format = --message = --numeric- uid-gid --quiet --rsh-command = --verbose --dot --warning = --swap --rename --swap-bytes --swap-halfwords --to-stdout --pattern-file = - -only-verify-crc --append --link --absolute-filenames --no-absolute-filenames --null --reset-access-time --dereference --owner = --make-directoryies --preserve- время модификации --no-preserve-owner --sparse --unconditional Mark Harrison 15 лет назад 5

4 ответа на вопрос

10
Mark Harrison
gzip -cd foo.cpio.gz | cpio -idmv 
  • я: извлечение (ввод)
  • d: создавать каталоги
  • m: сохранить mtime
  • V: многословный
3
Matt
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
nik

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

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

0
Chris D'Amato

For example, to extract the archived contents of /etc/httpd/ to the current directory, creating subdirectories ./etc/httpd/

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

The accepted answer and Matt's were both helpful to me but I was stumped for a while because of three details:

  1. The matching pattern needs to be quoted to work as a pattern :P
  2. The option --no-absolute-filenames must precede the pattern on the command line
  3. Since that option removes the leading / from filenames, the matching pattern must also omit the leading /

Похожие вопросы