Ich habe eine Unix-Softwareverteilung als komprimierte cpio-Datei erhalten. Welcher Befehl ist der beste, um die Dateien zu extrahieren?
Antwort1
gzip -cd foo.cpio.gz | cpio -idmv
- i: Extrahieren (Eingabe)
- d: Verzeichnisse erstellen
- m: mtime beibehalten
- v: ausführlich
Antwort2
mkdir archive
cd archive
zcat ../archive.cpio.gz | cpio -idmv --no-absolute-filenames
Obwohl dies eine alte Frage ist, wird sie bei Google weit oben angezeigt, daher dachte ich, ich könnte sie aktualisieren. Ich stimme der akzeptierten Antwort im Allgemeinen zu, aber Sie sollten „--no-absolute-filenames“ hinzufügen, es sei denn, Sie beabsichtigen, wichtige Systemdateien auf Ihrem Computer zu überschreiben. Außerdem bevorzuge ich persönlich „zcat“ gegenüber „gzip -cd“ oder „gunzip -c“.
Beachten Sie abschließend, dass Sie cpio als Root ausführen müssen (z. B. sudo), wenn Sie ein Root-Dateisystem extrahieren, das Geräteknoten enthält.
Antwort3
Um beispielsweise den archivierten Inhalt von /etc/httpd/ in das aktuelle Verzeichnis zu extrahieren und Unterverzeichnisse ./etc/httpd/ zu erstellen
mkdir restored-etc-httpd
cd restored-etc-httpd
zcat archive.cpio.gz | cpio -idmv --no-absolute-filenames "*etc/httpd/*"
Sowohl die akzeptierte Antwort als auch die von Matt waren für mich hilfreich, aber ich war aufgrund dreier Details eine Zeit lang ratlos:
- Das passende Muster muss in Anführungszeichen gesetzt werden, um als Muster zu funktionieren :P
- Die Option
--no-absolute-filenames
mussvorausgehendas Muster auf der Kommandozeile - Da diese Option die führenden Zeichen
/
aus Dateinamen entfernt, muss das passende Muster auch die führenden Zeichen weglassen./
Antwort4
Diese Wikipedia-Seite übercpio
hat einige gute Anmerkungen.
Weitere Einzelheiten finden Sie imcpio
Handbuch.
Ein Link von derselben Wikipedia-Seitediskutiert Vergleich mit tar
ArchivenUnd
hier ist ein Beispiel fürVerwendung cpio
mit dem tar
Format.