Wie kann ich mit dem Befehl tar Dateien ohne Komprimierung gruppieren?

60

Ich habe einen sehr großen Ordner mit mehr als 120.000 Dateien. und ich muss sie an einen anderen Ort auf demselben Computer (derselben Partition) verschieben.

Ich möchte den tarBefehl verwenden, um sie als eine Einheit zu gruppieren und dann mvbis zum Endpunkt.

Welchen Befehl brauche ich, um tarsie alle zusammen auszuführen und nichts zu komprimieren (ich brauche das schnellste Ergebnis).

sergserg
quelle
1
Warum tar verwenden und nicht nur die Dateien mv (1)? Oder verwenden Sie cp (1), wenn Sie die Originale nicht verlieren möchten?
Vonbrand
@vonbrand möchte man vielleicht eine einzige zusammenhängende Datei über das Netzwerk rsynchen. viel schneller als das rsynchen von 120k kleineren dateien. Es ist der Unterschied zwischen konstanter voller Geschwindigkeit und Höhen und Tiefen
mwm

Antworten:

85

tar komprimiert nicht standardmäßig, fügt nur keine Komprimierungsoption hinzu:

tar cvf myfolder.tar myfolder

Ich beziehe Hennes ' Kommentar in meine Antwort ein, da er nützliche Informationen hinzufügt:

TAR (Tape Archive) ist ursprünglich ein Unix-Programm, mit dem Archive auf Band erstellt werden. Da alle Geräte unter Unix als Dateien behandelt werden, ist es einfach, nicht auf ein Band zu schreiben, sondern auf eine Datei. Dies geschieht normalerweise mit dem Flag -f. Der Befehl tar CVF myfolder.tar myfolder mittels Teer, c Reate, v erbose f ile filename_to_create what_to_tar. Es gibt nirgendwo eine Komprimierung. Tar-Archive (als Dateien) wurden häufig mit dem Komprimierungsprogramm komprimiert und erhielten die Endung .Z (zB file.tar.Z). Später wurde dies mit der Z-Flagge in gtar aufgenommen

terdon
quelle
Fügt das rekursiv alle Unterordner und Dateien im tar hinzu?
Sergserg
2
@ Serg ja, das wird es.
Terdon
1
Vielen Dank. Normalerweise versuche ich, sowohl kurz als auch lang zu antworten. Wie in "Ja / Nein, es wird [nicht] funktionieren" für die kurze und eine Erklärung, warum als die längere Antwort. Den Hintergrund zu haben, warum das in Zukunft oft hilft.
Hennes
@ Serg, da es nicht immer so gut ist, dass ein Handbuch oder eine Anleitung die Dinge sofort klar macht. Manchmal ist es der beste Weg, den Befehl trotzdem auszuführen. Dann werden Sie sehen, was er tut. und wenn Sie wissen, was es tut oder eine gute Idee haben, kann das Handbuch dies für Sie bestätigen! Es ist einfach, tar an einem kleinen Beispielsatz von Dateien zu testen. Mit Beispielen, wie man es benutzt, ohne das Handbuch zu überarbeiten.
Barlop
Beachten Sie, dass Sie, wenn die schnellsten Ergebnisse gewünscht werden, das "v" -Flag weglassen sollten, um die Ausgabe stumm zu schalten. In meinem Fall hat dies die Befehlszeit von 16 Sekunden auf 6 Sekunden verringert, wenn es auf einer AWS t2.medium-Instanz ausgeführt wird.
David Backeus
6

Die @ terdon Antwort ist richtig.

Aber ich habe einen kleinen Fehler gemacht tar cvf myfolder.tar.gz myfolder. Ich wollte dieselben Endnamen für die Dateien im selben Pfad, tar.gzauch wenn sie nicht komprimiert sind.

Wenn Sie also etwas wie .gz, .zan das Ende des Dateinamens setzen, den Sie mit tar versuchen, wird die tar-App verstehen, dass Sie eine Komprimierung verwenden möchten, und dies wird entsprechend auf das angewendet, was Sie setzen (gz = gzip).

Wenn Sie also eine solche Erweiterung verwenden möchten tar.gz, stellen Sie sicher, dass Sie das Flag verwenden--no-auto-compress

--no-auto-compress    do not use archive suffix to determine the compression 
program
Ratata Tata
quelle