Während des Studiums für die lpic-Prüfung bin ich auf den Befehl gestoßen cpio
.
Die Beschreibung von cpio lautet:
Cpio wurde ursprünglich entwickelt, um Archive von Sicherungsdateien sequentiell und zusammenhängend auf einem Bandgerät zu speichern. Cpio komprimiert keine Inhalte, aber die resultierenden Archive werden häufig mit gzip oder anderen externen Kompressoren komprimiert.
Wenn ich mir Beispiele für die Verwendung von cpio ansehe, kann ich kein einziges Szenario finden, in dem cpio besser wäre als gängigere Tools wie tar
.
Was ist ein Beispiel für die Verwendung cpio
(neben Bandsicherungen) oder ist es auf heutigen Systemen nicht mehr relevant?
Antworten:
Es ist immer noch relevant für das Auspacken von RPMs. Es gibt ein
rpm2cpio
Dienstprogramm, das ein RPM-Paket in eincpio
Archiv konvertiert . Soweit ich weiß, gibt es nichts, was eine RPM in eintar
Archiv konvertieren könnte . Hier ist ein Anwendungsbeispiel:quelle
cpio
. Es wirdrpm2cpio
also nur eine Extraktionsfunktion ausgeführt, keine Konvertierung. Deshalb gibt es keinerpm2tar
.Wenn Ihr System kein GNU-Tar mit der
-T
Option und --null hatcpio
, können Sie eine bestimmte Teilmenge von Dateien in ein Tar-Archiv aufnehmen:Ich finde auch den
-V
/--dot
viel informativer über den Fortschritt als den ausführlichen Modus (intar
odercpio
) in Fällen, in denen Sie grob wissen, wie viele Dateien Sie packen müssen (vorausgesetzt, Sie wissen, wie lang Ihr Terminal ist und in meinem Fall gut sind) mit der Multiplikationstabelle von 80).Es gibt immer mehrere Lösungen für dasselbe Problem. Da
cpio
Sietar
Archive lesen können, können Sie auch auf Teer verzichten und einfachcpio
überall verwenden.quelle
-print0
und cpio kann die Ausgabe von nicht verstehengfind -print0
.cpio
Früher hatte die Verwendung einen Vorteil, aber diese spezielle Funktion ist beispielsweise in gcpio nicht implementiert. Ich spreche von der Tatsache, dass die ursprüngliche Implementierung von AT & T cpio die Dateiextraktion auf eine bestimmte Artinstall
und Weise implementiert hat, die der Funktionsweise ähnelt. Aus diesem Grund hat AT & T die Verwendung von cpio zur Installation von Binärdateien auf einem Live-System bevorzugt.Wenn Sie
star
unter dem Namen aufrufencpio
, erhalten Sie diese Funktion, und wenn Sie die Option-install
zu den Optionen für dasstar
Extrahieren von Dateien hinzufügen , erhalten Sie dieses Verhalten.Übrigens: Das CPIO-Archivformat wird von POSIX nicht mehr als nützliches Format angesehen, da es nicht erweiterbar ist. Die vier "Varianten" des CPIO-Formats sind vollständig inkompatibel und jedes Mal, wenn eine Erweiterung benötigt wurde, wurde eine völlig neue / inkompatible Variante des CPIO-Formats erstellt.
quelle
tar verwendet die ustar- Archivdefinition, die die Pfadnamenlänge auf 100 Byte begrenzt. Tief verschachtelte Hierarchien - heutzutage keine Seltenheit - können nicht mit tar archiviert werden. cpio hat dieses Handicap nicht.
Ich bevorzuge pax (1). Wie cpio nutzt pax die Standardeingabe und -ausgabe besser als tar. pax kann das cpio-Format verwenden. Wenn Sie also das Pfadnamenlimit überschreiten, können Sie dasselbe Dienstprogramm weiterhin verwenden, indem Sie dem Befehl -x cpio hinzufügen . Sie verwenden diese Option nur zum Erstellen von Archiven. Beim Lesen erkennt pax das Format automatisch.
quelle
char name[100]
in der GNU-Teerdokumentation .Hier ist eine, die ich zuvor gelernt habe
rsync
undcp -r
existierte:Dies kopiert alle Dateien in
/foo
in der/bar
Konservierung alle Dateiberechtigungen und Verzeichnisstruktur.Dazu müssen
tar
Sie eine temporäre Archivdatei erstellen und diese dann erneut entpacken, datar
dieser Durchgangsfiltermodus nicht vorhanden ist.quelle
star
da star eine -copy-Option unterstützt und in der Lage ist, Kopien effizienter als cpio zu erstellen.gcpio
als cpio unter Linux installiert ist und gcpio leider eine Implementierung mit vielen Problemen ist.Ich benutze cpio seit vielen Jahren und tue es immer noch. Es hat mich viele Male bei der Wiederherstellung ohne umfassende Linux / Unix-Kenntnisse gerettet.
Beispiel Ich habe einen Ubuntu 17.04LTS-Server installiert und aktualisiere meine Dateien regelmäßig, um sie mit ca. cpio zu sichern. jeden Monat mit einem externen USB 500Gb-Laufwerk.
Ich mounte das Backup-Laufwerk als solches:
Stellen Sie sicher, dass Sie in Ihrem Stammverzeichnis einen Ordner mit dem Namen BACKUP als Einhängepunkt erstellt haben, und verwenden Sie den folgenden Befehl.
Stellen Sie
df
sicher, dass es montiert ist. Dann ,cd /BACKUP
und erstellen Sie einen Ordner namens Ubuntu_Backup_17.04LTS.cd /
Überprüfen Sie dann , ob Sie sich in / befinden, bevor Sie den cpio-Prozess mit pwd starten, und führen Sie dann den folgenden Befehl aus:Dadurch werden alle Dateien und Ordner aus dem ROOT-Verzeichnis kopiert, mit Ausnahme des Mountpunkt-Backups.
Wenn Sie nach Abschluss des Vorgangs zu /BACKUP/Ubuntu_Backup_17.04LTS gehen und die Dateien und Ordner auflisten, sehen Sie, dass diese genau mit Ihrer ROOT-Laufwerksliste übereinstimmen.
Die Wiederherstellung ist genau das gleiche. Es kann sich um eine vollständige Wiederherstellung eines Ordners wie / etc handeln.
Beispiel:
und das Gegenteil ausführen;
oder für einen Ordner / etc) wäre der Befehl
Dadurch wird der Ordner / etc aus dem Backup nach / zur Wiederherstellung kopiert.
Dadurch werden alle Dateien und Ordner zurück nach / partition kopiert und anschließend neu gestartet. Es ist sehr praktisch, wenn ein Update schrecklich schief geht.
quelle