cpio VS tar und cp

cpio VS tar und cp

Ich habe gerade erfahren, dass CPIO drei Modi hat: Copy-Out, Copy-In und Pass-Through.

Ich habe mich gefragt, was die Vor- und Nachteile von cpio im Copy-Out- und Copy-In-Modus gegenüber tar sind. Wann ist es besser, cpio und wann tar zu verwenden?

Ähnliche Frage für CPIO im Pass-Through-Modus gegenüber CP.

Danke und Grüße!

Antwort1

Dies ist eine äußerst allgemeine Übersicht:

CPIO dupliziert ein Dateisystem besser, einschließlich der Erstellung von Backups. Es bewahrt Dinge wie Hardlinks, FIFOs und andere nicht standardmäßige Dateifunktionen. Die meisten Implementierungen von CPIO können alles, was TAR kann, einschließlich Lesen und Schreiben von .tar-Dateien. CPIO überträgt normalerweise eine Liste von Dateien von der Standardeingabe ins Archiv; dadurch ist es sehr einfach, eine Liste von etwas anderem (wie find) weiterzuleiten.

CPIO-Passthrough ist sehr nützlich, wenn Sie eine sehr lange Liste von Dateien haben, die Sie von Verzeichnis A in Verzeichnis B kopieren möchten. (Sie können es beispielsweise verwenden, findum alle Dateien zu finden, die sich in den letzten 2 Jahren auf Ihrem System geändert haben.)

TAR eignet sich besser zum einfachen Sichern all Ihrer Standarddateien auf/von einem Band (oder einer Archivdatei). Es ist etwas einfacher zu verwenden (für die meisten gängigen Aufgaben). Es erfüllt die einfachen Sicherungsanforderungen der meisten Benutzer problemlos; und seine Popularität beruht größtenteils auf dieser Tatsache.

Und nun das Kleingedruckte. Es gibt mehrere verschiedene Versionen und Implementierungen von CPIO und TAR. Jede hat unterschiedliche Funktionen und einige haben unterschiedliche Befehlszeilenoptionen. Es gibt Dinge, die jede kann, die die andere nicht kann; wenn Sie sich durch eine eingeschränkt fühlen, versuchen Sie es mit der anderen. Jeder hat einen Favoriten und in 99 % der Fälle wird jede die Aufgabe erfüllen.

Antwort2

Bei AE 3 Redhat habe ich festgestellt, dass cpio eine Größenbeschränkung von 2 GByte für einen Ausgabestream hat. Bei tar gab es diese Beschränkung jedoch nicht.

Bei anderen Systemen gelten möglicherweise andere Einschränkungen.

Antwort3

Aus den Kommentaren und anderen Hintergründen erkenne ich, dass es cpiomittlerweile weniger weit verbreitet ist und zwischen den Versionen inkonsistent ist. Es cpiohat aber einen Vorteil, den ich kürzlich beim Umgang mit einer großen Anzahl beschädigter Tar-Archive als unschätzbar wertvoll empfand. Es stoppt nicht beim ersten Fehler in einer Tar-Datei, sondern versucht, fehlerhafte Daten zu überspringen und so viel wie möglich zu extrahieren. Zum Beispiel:

tar xf ./sample.corrupt.tar

wird drucken

tar: Skipping to next header
tar: Exiting with failure status due to previous errors

nach dem ersten aufgetretenen Fehler, während

cpio -F ./sample.corrupt.tar -i -v

druckt die extrahierten Dateien und für jeden Fehler Folgendes:

cpio: invalid header: checksum error
cpio: warning: skipped 6 bytes of junk

cpio: invalid header: checksum error
cpio: warning: skipped 2 bytes of junk

etc...

Das Tar-Format erwartet, dass jeder Archivheader an einer 512-Grenze ausgerichtet ist. Wenn jedoch die Header durch Beschädigungen falsch ausgerichtet werden, cpiowird versucht, so viel wie möglich zu extrahieren.

Antwort4

Ich sehe keinen Grund, cpio aus einem anderen Grund zu verwenden als zum Rippen geöffneter RPM-Dateien überDrehzahloderrpm2cpio, aber es kann Sonderfälle geben, in denen cpio tar vorzuziehen ist.

Geschichte und Popularität

BeideTeerUndcpiosind konkurrierende Archivformate, die eingeführt wurden inVersion 7 Unixim Jahr 1979 und dann inPOSIX.1-1988, obwohl im nächsten Standard, POSIX.1-2001, nur noch tar übrig blieb1.

Das Dateiformat von Cpio wurde mehrmals geändert und ist zwischen den Versionen nicht vollständig kompatibel geblieben. Beispielsweise gibt es jetzt eine ASCII-codierte Darstellung binärer Dateiinformationsdaten.

Tar ist allgemein bekannter, ist im Laufe der Jahre vielseitiger geworden und wird mit größerer Wahrscheinlichkeit auf einem bestimmten System unterstützt. Cpio wird in einigen Bereichen noch verwendet, beispielsweise inRed Hat-PaketFormat (RPM), obwohlDrehzahl v5(was zugegebenermaßen obskur ist) verwendetxaranstelle von cpio.

Beide sind auf den meisten Unix-ähnlichen Systemen vorhanden, obwohl tar häufiger vorkommt. Hier sindDebians Installationsstatistiken:

#rank  name    inst    vote    old  recent  no-files  (maintainer)
   13   tar  189206  172133   3707   13298        68  (Bdale Garbee)
   61  cpio  189028   71664  96346   20920        98  (Anibal Monsalve Salazar)

Modi

Auskopien: Dies dient zur Archivierung, ähnlich wietar -pc

Einkopieren: Dies ist für die Archivextraktion, ähnlich wietar -px

Durchgang: Dies ist im Grunde beides von oben, ähnlich wie , tar -pc … |tar -pxaber in einem einzigen Befehl (und daher mikroskopisch schneller). Es ist ähnlich wie cp -pdr, obwohl sowohl cpio als auch (insbesondere) tar mehr Anpassungsmöglichkeiten bieten. Bedenken Sie auch rsync -a, das oft vergessen wird, da es normalerweise über eine Netzwerkverbindung verwendet wird.

Ich habe ihre Leistung nicht verglichen, gehe aber davon aus, dass sie hinsichtlich CPU, Speicher und Archivgröße (nach der Komprimierung) ziemlich ähnlich sind.

verwandte Informationen