perintah ekstrak dasar cpio, 'tar xzvf' setara?

12

Saya telah menerima distribusi perangkat lunak Unix sebagai file cpio terkompresi. Apa perintah terbaik untuk mengekstrak file?

Mark Harrison
sumber
Kapan Anda melakukan man cpioapa yang Anda lihat?
5
Saya melihat: -i -o -p -t -B -c -C -f -F -H -M -n -v -V -W -b -r -s -S -E -A -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 --ke-stdout --pattern-file = - -hanya-memverifikasi-crc --append --link --absolute-filenames --no-absolute-filenames --null --reset-access-time --dereference --owner = --membuat direktori --preserve- modifikasi-waktu --tidak ada-simpan-pemilik - sparse --unconditional
Mark Harrison

Jawaban:

11
gzip -cd foo.cpio.gz | cpio -idmv
  • i: ekstrak (input)
  • d: buat direktori
  • m: pertahankan waktu
  • v: verbose
Mark Harrison
sumber
3
mkdir archive
cd archive
zcat ../archive.cpio.gz | cpio -idmv --no-absolute-filenames

Meskipun ini adalah pertanyaan lama, ini muncul tinggi di Google, jadi saya pikir saya mungkin memperbaruinya. Saya setuju dengan jawaban yang diterima secara umum, tetapi Anda harus menambahkan "--no-absolute-filenames" kecuali Anda bermaksud menimpa file sistem penting pada mesin Anda. Juga, secara pribadi, saya lebih suka "zcat" daripada "gzip -cd" atau "gunzip -c".

Terakhir, perhatikan bahwa Anda perlu menjalankan cpio sebagai root (mis. Sudo) jika Anda mengekstrak sistem file root yang berisi node perangkat.

Mat
sumber
0

Misalnya, untuk mengekstrak konten yang diarsipkan dari / etc / httpd / ke direktori saat ini, membuat subdirektori ./etc/httpd/

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

Jawaban yang diterima dan Matt sama-sama membantu saya tetapi saya bingung untuk sementara karena tiga detail:

  1. Pola yang cocok perlu dikutip agar berfungsi sebagai pola: P
  2. Opsi --no-absolute-filenamesharus mendahului pola pada baris perintah
  3. Karena opsi itu menghilangkan yang memimpin /dari nama file, pola yang cocok juga harus menghilangkan yang memimpin/
Chris D'Amato
sumber