Komprimieren eines Ordners, aber nicht die Komprimierung bestimmter Dateitypen, sondern deren Einschluss in die gz-Datei

Komprimieren eines Ordners, aber nicht die Komprimierung bestimmter Dateitypen, sondern deren Einschluss in die gz-Datei

Ich verwende tar mit pigz, um einen Ordner zu komprimieren und eine Sicherungskopie zu speichern. Die Größe dieses Ordners beträgt ~250 GB oder mehr. Dieser Ordner enthält verschiedene Inhalte, darunter zahlreiche Text- und Protokolldateien, ISOs und Zip-Dateien in vielen verschiedenen Unterordnern. Die vollständige Komprimierung dieses Ordners dauert etwa 1 Stunde (manchmal auch länger). Im Moment verwende ich dies in einem Skript.

tar -cf - <data_folder> | pigz -1 > <output_file>.tar.$

Ich möchte die Komprimierungszeit verkürzen, indem ich die Komprimierung von ISOs und Zip-Dateien ausschließe. Ich möchte, dass sie (ISOs und Zip-Dateien) als solche (unkomprimiert) in die GZIP-Datei aufgenommen werden.

Meine Frage ist folgende:Ist es möglich, Dateien selektiv nach Typ zu komprimieren und dennoch unkomprimierte Dateien in die GZIP-Ausgabe einzuschließen? Wie kann man das ausprobieren?

Antwort1

Nein, das kannst du nicht. Zumindest nicht direkt.

tarführt keine Komprimierung durch. Es liest lediglich einen Teil des (virtuellen) Dateisystems und erzeugt daraus einen zusammenhängenden Datenstrom. Dieser Datenstrom wird dann häufig an ein Komprimierungstool/eine Komprimierungsbibliothek übergeben, beispielsweise gzip/libz. Der Komprimierungsteil sieht keine einzelnen Dateien und kennt sie auch nicht. Er komprimiert lediglich den von generierten Datenstrom tar. Daher können Sie Ihrem aktuellen Ansatz keine selektive Komprimierung hinzufügen.

Sie können das Tar-Archiv schrittweise erstellen, indem Sie jede Datei einzeln komprimieren und dann zum Tar-Archiv hinzufügen. Auf diese Weise können Sie beispielsweise ISO-Images unkomprimiert zum Archiv hinzufügen. Beachten Sie jedoch, dass das Tar-Archiv selbst nicht komprimiert wird. Daher müssen Sie nach dem Entpacken jede Datei gegebenenfalls einzeln entpacken.

Wie viel Zeit verliert man tatsächlich durch das Komprimieren von ISO- und ZIP-Dateien? Da es sich tar | pigz > <file>um Stream-Verarbeitung handelt, würde ich davon ausgehen, dass man nicht so viel Zeit verliert. Es werden Blöcke auf die Festplatte geschrieben, während die nächsten Blöcke komprimiert werden, während der Stream erstellt wird. Das geschieht parallel.

Vielleicht können Sie Ihre Strategie optimieren:

Sie könnten alle ISO- und ZIP-Dateien in dedizierte Verzeichnisse legen und dann Ihr Archiv in drei Schritten erstellen: Rest tarnen und komprimieren, ISO-Verzeichnis hinzufügen, ZIP-Verzeichnis hinzufügen. Das resultierende Archiv erfordert immer noch ein langwieriges Extraktionsverfahren, bei dem das äußere Archiv entpackt und das innere Archiv dann dekomprimiert und entpackt wird. Dies ist jedoch praktikabler, als jede einzelne Datei zu dekomprimieren.

Oder Sie optimieren die Befehle: Muss es ein Tar-Archiv eines Dateisystems sein oder können Sie dddamit die gesamte Partition sichern? Das Sichern der gesamten Partition hat den Vorteil kontinuierlicher Lesevorgänge von der/den Festplatte(n), was schneller sein kann als das Arbeiten mit dem Dateisystem. Ich bin sicher, Sie können die Befehle so optimieren, dass Sie pigzmit größeren Blöcken arbeiten können, was Ihnen eine Geschwindigkeitssteigerung bringen sollte, wenn ISO- und ZIP-Dateien Ihr Problem sind. Sie könnten auch etwas Pufferung hinzufügen (z. B. mbuffer), bevor Sie das Ergebnis auf die Festplatte schreiben, um den Medienzugriff weiter zu optimieren.

verwandte Informationen