Я получил дистрибутив программного обеспечения 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), если вы извлекаете корневую файловую систему, содержащую узлы устройства.
На этой странице Википедии на 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/*"
Принятый ответ и ответ Мэтта были мне полезны, но я на некоторое время был в тупике из-за трех деталей:
- Соответствующий шаблон должен быть заключен в кавычки, чтобы работать как шаблон:P
- Опция
--no-absolute-filenames
должна предшествовать шаблону в командной строке - Так как эта опция удаляет ведущие
/
из имен файлов, соответствующий шаблон должен также опускать ведущие/