GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Zeit, sehr große (100 GB) Dateien zu komprimieren

Sie können die Geschwindigkeit von gzip mit --fast ändern --best oder -# wobei # eine Zahl zwischen 1 und 9 ist (1 ist die schnellste, aber weniger Komprimierung, 9 ist die langsamste, aber stärkere Komprimierung). Standardmäßig läuft gzip auf Level 6.


Der Grund, warum tar im Vergleich zu gzip so wenig Zeit benötigt, ist, dass es sehr wenig Rechenaufwand beim Kopieren Ihrer Dateien in eine einzelne Datei gibt (was es tut). gzip hingegen verwendet tatsächlich Komprimierungsalgorithmen, um die Tar-Datei zu verkleinern.

Das Problem ist, dass gzip (wie Sie festgestellt haben) auf einen einzelnen Thread beschränkt ist.

Geben Sie pigz ein, das mehrere Threads verwenden kann, um die Komprimierung durchzuführen. Ein Beispiel für die Verwendung wäre:

tar -c --use-compress-program=pigz -f tar.file dir_to_zip

Es gibt eine nette kurze Zusammenfassung der Option --use-compress-program drüben auf einer Schwesterseite.


Ich scheine eine einzelne CPU zu ungefähr 100 % auszulasten.

Das bedeutet, dass es kein E/A-Leistungsproblem gibt, sondern dass die Komprimierung nur einen Thread verwendet (was bei gzip der Fall sein wird).

Wenn Sie es schaffen, den Zugriff/die Zustimmung zu erreichen, die erforderlich ist, um andere Tools zu installieren, unterstützt 7zip auch mehrere Threads, um Multi-Core-CPUs zu nutzen, obwohl ich nicht sicher bin, ob sich dies sowohl auf das gzip-Format als auch auf sein eigenes erstreckt.

Wenn Sie vorerst nur gzip verwenden und mehrere Dateien komprimieren müssen, können Sie versuchen, sie einzeln zu komprimieren. Auf diese Weise verwenden Sie mehr von dieser Multi-Core-CPU, indem Sie mehr als einen Prozess parallel ausführen. Achten Sie jedoch darauf, es nicht zu übertreiben, denn sobald Sie sich der Kapazität Ihres E/A-Subsystems nähern, wird die Leistung steil abfallen (auf weniger als bei Verwendung eines Prozesses/Threads), da die Latenz der Kopfbewegungen erheblich wird Engpass.


Linux
  1. Verwenden von rsync zum Synchronisieren von Dateien

  2. Entpacken Sie alle Dateien in einem Verzeichnis

  3. Verwenden von nc zum Übertragen großer Dateien

  4. tar/gzip mit Ausnahme bestimmter Dateien

  5. Packen Sie 7z-Dateien unter Linux in ZIP-Dateien um

So benennen Sie Dateien über die Befehlszeile in Linux um

So verschieben Sie eine große Anzahl von Dateien in Linux

So kopieren Sie eine große Anzahl von Dateien unter Linux

So können Sie große (100 GB+) Dateien unter Linux schneller komprimieren

Übertragen Sie Dateien mit WinSCP

So komprimieren Sie eine Datei unter Linux