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