comando di estrazione di base cpio, equivalente 'tar xzvf'?


12

Ho ricevuto una distribuzione software Unix come file compresso cpio. Qual è il comando migliore per estrarre i file?


Quando hai fatto man cpiocosa hai visto?

5
Vedo: -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-confirm-crc --append --link --absolute-filenames --no-absolute-filenames --null --reset-access-time --dereference --owner = --make-directories --preserve- editing-time --no-preserv-owner --sparse --unconditional
Mark Harrison,

Risposte:


11
gzip -cd foo.cpio.gz | cpio -idmv
  • i: extract (input)
  • d: crea directory
  • m: conserva mtime
  • v: verbose

3
mkdir archive
cd archive
zcat ../archive.cpio.gz | cpio -idmv --no-absolute-filenames

Mentre questa è una vecchia domanda, si presenta in alto su Google, quindi ho pensato di poterlo aggiornare. Sono d'accordo con la risposta accettata in generale, ma è necessario aggiungere "--no-absolute-filenames" a meno che non si intenda sovrascrivere file di sistema importanti sulla propria macchina. Inoltre, personalmente, preferisco "zcat" rispetto a "gzip -cd" o "gunzip -c".

Infine, tieni presente che devi eseguire cpio come root (ad esempio sudo) se stai estraendo un filesystem di root che contiene nodi di dispositivo.



0

Ad esempio, per estrarre i contenuti archiviati di / etc / httpd / nella directory corrente, creando sottodirectory ./etc/httpd/

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

La risposta accettata e quella di Matt mi sono state entrambe utili, ma sono rimasta perplessa per un po 'a causa di tre dettagli:

  1. Il modello di corrispondenza deve essere citato per funzionare come modello: P
  2. L'opzione --no-absolute-filenamesdeve precedere il modello sulla riga di comando
  3. Poiché tale opzione rimuove il lead /dai nomi dei file, anche il modello corrispondente deve omettere il lead/
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.