Ich habe eine Unix-Softwareverteilung als komprimierte cpio-Datei erhalten. Was ist der beste Befehl, um die Dateien zu extrahieren?
Ich habe eine Unix-Softwareverteilung als komprimierte cpio-Datei erhalten. Was ist der beste Befehl, um die Dateien zu extrahieren?
Antworten:
gzip -cd foo.cpio.gz | cpio -idmv
mkdir archive
cd archive
zcat ../archive.cpio.gz | cpio -idmv --no-absolute-filenames
Dies ist zwar eine alte Frage, sie taucht aber bei Google auf, sodass ich dachte, 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. Auch persönlich bevorzuge ich "zcat" gegenüber "gzip -cd" oder "gunzip -c".
Beachten Sie schließlich, dass Sie cpio als root ausführen müssen (z. B. sudo), wenn Sie ein Root-Dateisystem extrahieren, das Geräteknoten enthält.
Diese Wikipedia-Seite cpio
hat einige gute Hinweise.
Weitere Einzelheiten finden Sie im cpio
Handbuch .
Ein Link auf derselben Wikipedia-Seite beschreibt den Vergleich mit tar
Archiven .
Und hier ist ein Beispiel für die Verwendung cpio
mit dem tar
Format .
Um beispielsweise den archivierten Inhalt von / etc / httpd / in das aktuelle Verzeichnis zu extrahieren, erstellen Sie Unterverzeichnisse ./etc/httpd/
mkdir restored-etc-httpd
cd restored-etc-httpd
zcat archive.cpio.gz | cpio -idmv --no-absolute-filenames "*etc/httpd/*"
Die akzeptierte Antwort und die von Matt waren beide hilfreich für mich, aber ich war eine Weile ratlos wegen drei Details:
--no-absolute-filenames
muss vor dem Muster in der Befehlszeile stehen/
Punkt aus den Dateinamen entfernt wird, muss im übereinstimmenden Muster auch der führende Punkt weggelassen werden/
man cpio
was gesehen?