So komprimieren und entpacken Sie Dateien mit Gzip unter Linux

Veröffentlicht: 2022-06-28
Linux-Terminal auf rotem Hintergrund.
fatmawati achmad zaenuri/Shutterstock.com

Es gibt viele Dienstprogramme zur Dateikomprimierung, aber dasjenige, das Sie garantiert auf jeder Linux-Distribution finden, ist gzip . Wenn Sie nur lernen, ein Komprimierungstool zu verwenden, sollte es gzip sein.

VERWANDT: Wie funktioniert die Dateikomprimierung?

Algorithmen und Bäume

Das gzip -Datenkomprimierungstool wurde Anfang der 1990er Jahre geschrieben und ist immer noch in jeder Linux-Distribution zu finden. Es sind andere Komprimierungstools verfügbar, aber egal auf welchem ​​​​Linux-Computer Sie arbeiten müssen, Sie werden gzip darauf finden. Wenn Sie also wissen, wie man gzip verwendet, können Sie loslegen, ohne etwas installieren zu müssen.

gzip ist eine Implementierung des DEFLATE-Algorithmus, der von Phil Katz von PKZIP erfunden und patentiert wurde. Der DEFLATE-Algorithmus verbesserte frühere Komprimierungsalgorithmen, die alle mit Variationen eines Themas arbeiteten. Die zu komprimierenden Daten werden gescannt, und eindeutige Zeichenfolgen werden identifiziert und einem binären Baum hinzugefügt.

Den eindeutigen Strings wird aufgrund ihrer Position im Baum ein eindeutiger ID - Token zugeordnet . Die Token werden verwendet, um die Zeichenfolgen in den Daten zu ersetzen, und da die Token kleiner sind als die Daten, die sie ersetzt haben, wird die Datei komprimiert. Durch das Ersetzen der Tokens für die ursprünglichen Zeichenfolgen werden die Daten wieder in ihren unkomprimierten Zustand aufgeblasen.

Benchmarking: Was ist das beste Dateikomprimierungsformat?
RELATED Benchmarking: Was ist das beste Dateikomprimierungsformat?

Der DEFLATE-Algorithmus fügte die Wendung hinzu, dass den am häufigsten vorkommenden Zeichenfolgen die kleinsten Token zugewiesen wurden und den am seltensten auftretenden Zeichenfolgen größere zugewiesen wurden. Der DEFLATE-Algorithmus beinhaltete auch Ideen von zwei früheren Komprimierungsverfahren, der Huffman-Codierung und der LZ77-Komprimierung.

Zum Zeitpunkt des Schreibens ist der DEFLATE-Algorithmus fast drei Jahrzehnte alt. Vor drei Jahrzehnten waren die Kosten für die Datenspeicherung hoch und die Übertragungsgeschwindigkeiten langsam. Die Datenkomprimierung war von entscheidender Bedeutung.

4 Möglichkeiten, Speicherplatz unter Linux freizugeben
VERWANDTE 4 Möglichkeiten, Speicherplatz unter Linux freizugeben

Die Datenspeicherung ist heute viel billiger und die Übertragungsgeschwindigkeiten sind um Größenordnungen höher. Aber wir haben so viel mehr Daten zu speichern, und Menschen auf der ganzen Welt greifen auf Cloud-Speicher und Streaming-Dienste zu. Die Datenkomprimierung ist immer noch von entscheidender Bedeutung, auch wenn Sie nur etwas verkleinern, das Sie hochladen oder übertragen müssen, oder wenn Sie versuchen, Speicherplatz auf einer lokalen Festplatte zurückzugewinnen.

Der gzip-Befehl

Je größer eine Datei ist, desto besser kann die Komprimierung sein. Dies hat zwei Gründe. Einer ist, dass es in einer großen Datei viele wiederholte, identische Folgen von Bytes geben wird. Der zweite Grund ist, dass die Liste der Zeichenfolgen und Token in der komprimierten Datei gespeichert werden muss, damit die Dekomprimierung stattfinden kann. Bei einer sehr kleinen Datei kann dieser Overhead die Vorteile der Komprimierung zunichte machen. Aber selbst bei einer ziemlich kleinen Datei ist wahrscheinlich eine gewisse Größenreduzierung zu verzeichnen.

Komprimieren einer Datei

Um eine Datei zu komprimieren, müssen Sie lediglich den Namen der Datei an den gzip -Befehl übergeben. Wir überprüfen die Originalgröße der Datei, komprimieren sie und überprüfen dann die Größe der komprimierten Datei.

 ls -lh calc-sheet.ods
 gzip calc-sheet.ods
 ls -lh cal-* 

Komprimieren einer Tabelle

Die Originaldatei, eine Tabelle namens „calc-sheet.ods“, ist 11 KB groß, und die komprimierte Datei – auch als Archivdatei bekannt – ist 9,3 KB groß. Beachten Sie, dass der Name der Archivdatei der Name der Originaldatei mit dem Anhang „.gz“ ist.

Die erste Verwendung des ls zielt auf eine bestimmte Datei ab, die Tabellenkalkulation. Die zweite Verwendung von ls sucht nach allen Dateien, die mit „calc-“ beginnen, findet aber nur die komprimierte Datei. Das liegt daran, dass gzip standardmäßig die Archivdatei erstellt und die Originaldatei löscht.

Das ist kein Problem. Wenn Sie die Originaldatei benötigen, können Sie sie aus der Archivdatei abrufen. Wenn Sie es jedoch vorziehen, die Originaldatei beizubehalten, können Sie die Option -k (Keep) verwenden.

 gzip -k calc-sheet.ods
 ls -lh Berechnungsblatt.* 

Komprimieren einer Datei und Beibehalten der Originaldatei

Diesmal bleibt die ursprüngliche ODS-Datei erhalten.

Dekomprimieren einer Datei

Um eine GZ-Archivdatei zu dekomprimieren, verwenden Sie die Option -d (decompress). Dadurch wird die komprimierte Datei aus dem Archiv extrahiert und dekomprimiert, sodass sie nicht mehr von der Originaldatei zu unterscheiden ist.

 ls calc-sheet.*
 gzip -d calc-sheet.ods.gz
 ls calc-sheet.* 

Dekomprimieren einer Datei mit gzip

Dieses Mal können wir sehen, dass gzip die Archivdatei nach dem Extrahieren der Originaldatei gelöscht hat. Um die Archivdatei beizubehalten, müssen wir erneut die Option -k (keep) sowie die Option -d (decompress) verwenden.

 ls calc-sheet.*
 gzip -d calc-sheet.ods.gz
 ls calc-sheet.* 

Dekomprimieren einer Datei und Aufbewahren der Archivdatei

Diesmal löscht gzip die Archivdatei nicht.

VERWANDT: Warum gelöschte Dateien wiederhergestellt werden können und wie Sie dies verhindern können

Dekomprimieren und Überschreiben

Wenn Sie versuchen, eine Datei in einem Verzeichnis zu extrahieren, in dem die Originaldatei – oder eine andere Datei mit derselben – existiert, gzip Sie auf, die Extraktion abzubrechen oder die vorhandene Datei zu überschreiben.

 gzip -d Textdatei.txt.gz 

Eingabeaufforderung von gzip überschreiben, wenn die Datei im Archiv bereits im Verzeichnis vorhanden ist

Wenn Sie im Voraus wissen, dass Sie die Datei im Verzeichnis gerne mit der Datei aus dem Archiv überschreiben möchten, verwenden Sie die Option -f (erzwingen).

 gzip -df Textdatei.txt.gz 

Erzwingen des Überschreibens einer vorhandenen Datei

Die Datei wird überschrieben und Sie kehren automatisch zur Befehlszeile zurück.

Verzeichnisbäume komprimieren

Die Option -r (rekursiv) bewirkt, dass gzip die Dateien in einem gesamten Verzeichnisbaum komprimiert. Aber das Ergebnis ist möglicherweise nicht das, was Sie erwarten.

Hier ist der Verzeichnisbaum, den wir in diesem Beispiel verwenden werden. Die Verzeichnisse enthalten jeweils eine Textdatei.

 Baumebene1 

Verzeichnisbaumstruktur testen

Lassen Sie uns gzip im Verzeichnisbaum verwenden und sehen, was passiert.

 gzip -r level1/
 Baumebene1 

Verzeichnisstruktur nach dem Ausführen von gzip darauf

Das Ergebnis ist, dass gzip eine Archivdatei für jede Textdatei in der Verzeichnisstruktur erstellt hat. Es wurde kein Archiv des gesamten Verzeichnisbaums erstellt. Tatsächlich kann gzip nur eine einzelne Datei in einem Archiv ablegen.

Wir können eine Archivdatei erstellen, die einen Verzeichnisbaum und alle seine Dateien enthält, aber wir müssen einen anderen Befehl ins Spiel bringen. Das tar Programm wird verwendet, um Archive vieler Dateien zu erstellen, aber es hat keine eigenen Komprimierungsroutinen. Aber indem wir die entsprechenden Optionen mit tar verwenden, können wir tar veranlassen, die Archivdatei durch gzip zu schieben. Auf diese Weise erhalten wir eine komprimierte Archivdatei und ein Archiv mit mehreren Dateien oder mehreren Verzeichnissen.

 tar -czvf level1.tar.gz level1

Die tar Optionen sind:

  • c : Erstellen Sie ein Archiv.
  • z : Schicken Sie die Dateien durch gzip .
  • v : Ausführlicher Modus. Geben Sie im Terminalfenster aus, was tar vorhat.
  • f level1.tar.gz : Dateiname für die Archivdatei.

Die Ausgabe von tar arbeitet sich durch den Verzeichnisbaum

Dadurch werden die Verzeichnisbaumstruktur und alle Dateien innerhalb des Verzeichnisbaums archiviert.

RELATED: So komprimieren und extrahieren Sie Dateien mit dem tar-Befehl unter Linux

Abrufen von Informationen über Archive

Die Option -l (Liste) liefert einige Informationen über eine Archivdatei. Es zeigt Ihnen die komprimierten und unkomprimierten Größen der Datei im Archiv, das Komprimierungsverhältnis und den Namen der Datei.

 gzip -l ebene1.tar.gz
 gzip -l Textdatei.txt.gz 

Verwenden der Option -l list, um Komprimierungsstatistiken für ein Archiv anzuzeigen

Sie können die Integrität einer Archivdatei mit der Option -t (test) prüfen.

 gzip -t level1.tar.gz 

Testen eines Archivs mit der Option -t

Wenn alles in Ordnung ist, kehren Sie stillschweigend zur Befehlszeile zurück. Keine Nachrichten sind gute Nachrichten.

Wenn das Archiv beschädigt oder kein Archiv ist, werden Sie darüber informiert.

 gzip -t not-an-archive.gz 

Verwenden der Option -t zum Testen einer Datei, die kein Archiv ist

Geschwindigkeit versus Komprimierung

Sie können wählen, ob Sie die Geschwindigkeit der Erstellung des Archivs oder den Grad der Komprimierung priorisieren möchten. Sie tun dies, indem Sie optional eine Zahl von -1 bis top -9 . Die Option -1 bietet die schnellste Geschwindigkeit auf Kosten der Komprimierung und -9 die höchste Komprimierung auf Kosten der Geschwindigkeit.

Sofern Sie keine dieser Optionen angeben, verwendet gzip -6 .

 gzip -1 calc-sheet.ods
 ls -lh calc-sheet.ods.gz
 gzip -9 calc-sheet.ods
 ls -lh calc-sheet.ods.gz
 gzip -6 calc-sheet.ods
 ls -lh calc-sheet.ods.gz 

Verwenden von gzip mit unterschiedlichen Prioritäten für Geschwindigkeit und Komprimierung

Bei einer so kleinen Datei haben wir keinen signifikanten Unterschied in der Ausführungsgeschwindigkeit festgestellt, aber es gab einen kleinen Unterschied in der Komprimierung.

Interessanterweise gibt es keinen Unterschied zwischen der Verwendung von Level 9-Komprimierung und Level 6-Komprimierung. Sie können aus einer bestimmten Datei nur eine begrenzte Komprimierung herausholen, und in diesem Fall wurde diese Grenze mit Komprimierung der Stufe 6 erreicht. Das Hochdrehen auf 9 brachte keine weitere Verringerung der Dateigröße. Bei größeren Dateien wäre der Unterschied zwischen Level 6 und Level 9 ausgeprägter.

Komprimiert, nicht geschützt

Verwechseln Sie Komprimierung nicht mit Verschlüsselung oder irgendeiner Form von Schutz. Das Komprimieren einer Datei bietet weder Sicherheit noch verbesserten Datenschutz. Jeder, der Zugriff auf Ihre Datei hat, kann sie mit gzip entpacken.

VERWANDT: Listen Sie die 10 größten Dateien oder Verzeichnisse unter Linux auf