Wie gefällt Ihnen der Artikel?
4
Wie gefällt Ihnen der Artikel?
4

So archivieren und komprimieren Sie Dateien unter Linux

Hinter Datenarchivierung steckt der Grundgedanke, Dateien oder ganze Verzeichnisse zu sichern und an einem sicheren Ort abzulegen, oftmals in komprimierter Form. Aus Gründen der Datensicherheit wurde der Archivierung in Serverumgebungen schon früh eine wichtige Bedeutung beigemessen: Ursprünglich wurden die Serverdaten dazu auf Bandlaufwerken abgesichert – bei großen Datenmengen kommt diese Back-up-Methode immer noch zum Einsatz. Um diesen Archivierungsvorgang möglichst effizient zu gestalten, wurde für Unix-Systeme schon 1979 das Packprogramm tar (engl. tape archiver = „Band-Archivierer“) entwickelt, mit dessen Hilfe Dateien und Verzeichnisse bis heute in eine einzige Datei gepackt und aus dieser auch wiederhergestellt werden können, wobei die Benutzerrechte bestehen bleiben, wenn Quelle und Ziel die Unix- bzw. Linux-Dateirechte unterstützen.

Um beim Archivierungsprozess zusätzlich Speicherplatz zu sparen, werden .tar-Dateien außerdem häufig mithilfe von verschiedenen Tools wie gzip, bzip2 oder lzop komprimiert. Doch worin unterscheiden sich die einzelnen Komprimierungsprogramme und Formate? Und warum ist für Systeme wie Linux tar auch heute noch von so großer Bedeutung?

Das sind die bekanntesten Komprimierungsprogramme für Linux

Es gibt eine Reihe von freien Komprimierungstools für Linux-Distributionen, die vor allem eines gemeinsam haben: Sie lassen sich über die Kommandozeile bzw. das Terminal bedienen. Mit kurzen Befehlen können so auf schnelle Weise komprimierte Dateien wie z. B. HTML-Dokumente erzeugt werden, die Speicherplatz und Bandbreite beim Versand über Netzwerke oder das Internet sparen. Darüber hinaus existieren standardmäßig auch grafische Oberflächen für diese Tools sowie sogenannte Archivmanager, die mehrere Komprimierungsprogramme – die allerdings auch installiert sein müssen – in einer visuellen Nutzeroberfläche vereinen. Die Bedienung über die grafischen Interfaces setzt logischerweise zusätzliche Systemressourcen voraus, weshalb das Terminal prinzipiell die optimale Wahl zur Kompression darstellt.

Der elementare Unterschied zwischen den einzelnen Programmen ist der Kompressionsgrad, der gleichzeitig mit einer unterschiedlichen Kompressionsdauer einhergeht. Allerdings können in den meisten Fällen auch im Tool selbst unterschiedliche Modi gewählt werden, um beispielsweise die bestmögliche Speichereinsparung zu bieten oder auf der anderen Seite einfach möglichst schnell zu komprimieren. Ein weiteres Merkmal, in dem sich Komprimierungssoftware unterscheidet, ist das Ausgabeformat. Aufgrund verschiedener eingesetzter Algorithmen besitzen die komprimierten Dateien nämlich unterschiedliche Packformate und erfordern darum auch spezifische Programme zum Entpacken.

gzip

gzip (GNU zip) ist eine der meistgenutzten Komprimierungsmethoden unter Linux. Insbesondere in der Webentwicklung spielt das Tool, das auf dem Deflate-Algorithmus basiert und ursprünglich als Nachfolger des Unix-Urgesteins compress für die GNU-Plattform entwickelt wurde, eine große Rolle. Heute kann die in C programmierte Anwendung dank diverser Varianten nicht nur unter Linux zum Entpacken und Packen von Dateien eingesetzt werden, sondern auch auf Windows- und macOS-Systemen. gzip bildet Datenblöcke mit einer Größe von 32.000 Bytes (32 kB), weshalb es in dieser Hinsicht gegenüber modernen Kompressionsprogrammen eher als veraltet gilt.

In Sachen Geschwindigkeit zählt das freie Packprogramm hingegen bis heute zur Spitze, weshalb gängige Webserver-Software wie Apache, IIS oder NGINX es für gewöhnlich in Form eigener Module implementiert haben, um Nutzeranfragen in kürzester Zeit mit komprimierten Datenpaketen beantworten zu können. Ausführliche Informationen zur Funktionsweise und Nutzung des GPL-lizenzierten Komprimierungstools erhalten Sie in diesem weiterführenden Artikel.

Vorteile Nachteile
Schneller Komprimierungsprozess Geringe Blockgröße
Standard gängiger Webserver-Software Geringer Komprimierungsgrad

bzip2

Für eine verlustfreie und hochwertige Komprimierung von Dateien unter Linux eignet sich auch das unter einer BSD-ähnlichen Lizenz vertriebene bzip2. Die Anwendung bedient sich eines dreistufigen Kompressionsverfahrens: Zunächst findet – mithilfe der Burrows-Wheeler-Transformation – eine Sortierung der eingehenden Daten in verschiedene Blöcke statt. Diese haben eine Größe von bis zu 900.000 Bytes (900 kB) und werden im Anschluss einer Move-to-Front-Transformation unterzogen. Abschließend sorgt eine Huffman-Kodierung für die eigentliche Komprimierung der Daten. Mit bzip2 verpackte Dateien erhalten die Formatendung .bz2.

Das von Julian Seward entwickelte Programm übertrumpft andere Tools in puncto Komprimierung bei Weitem, nimmt für den Prozess im Vergleich aber auch deutlich mehr Zeit in Anspruch. Einer der größten Vorteile ist, dass Sie beim bz2-Entpacken selbst mit teilweise beschädigten Archiven arbeiten können. So lassen sich mithilfe von bzip2recover zumindest alle noch lesbaren Blöcke extrahieren und anschließend entpacken. bzip2 ist der offizielle Nachfolger von bzip, das mit einer arithmetischen Codierung arbeitete und aus patentrechtlichen Gründen nicht mehr weiterentwickelt wurde.

Vorteile Nachteile
Starker Komprimierungsgrad Sehr langsam
Entpacken fehlerhafter Archive teilweise möglich  

p7zip

Bei p7zip handelt es sich um eine Portierung des freien, LGPL-lizenzierten 7-Zip-Archivprogramms für POSIX-Plattformen. Die Portierung stellt die einzige Lösung dar, um unter Linux das .7z-Format vollständig zu unterstützen. Das Packprogramm greift auf den 1998 von Igor Wiktorowitsch Pawlow entwickelten Lempel-Ziv-Markow-Algorithmus (LZMA) zurück, der mit einem Wörterbuchverfahren arbeitet und prinzipiell als Weiterentwicklung von Deflate (rund 50 Prozent stärkere Kompression) gesehen werden kann. Ein erstelltes Dateiarchiv kann dabei bei Bedarf in beliebig große Teile zerlegt, mit einem Passwortschutz versehen und optional per AES-256 verschlüsselt werden (Kopfzeile).

LZMA sorgt mit seiner starken Kompressionsrate für erstklassige Ergebnisse und schneidet auch beim Thema Geschwindigkeit gut ab. Allerdings stellt das Archivierungstool im Gegenzug auch sehr hohe Ansprüche an die Systemleistung. Insbesondere für höhere Komprimierungsstufen sind daher ein guter Prozessor (mindestens 2 GHz) und ausreichend Arbeitsspeicher (2 GB oder mehr) Grundvoraussetzung. Neben der Nutzung via Terminal oder Archiv Manager existiert mit p7zip-gui auch eine eigene grafische Oberfläche für die portierte 7-Zip-Anwendung.

Vorteile Nachteile
Hervorragendes Verhältnis von Kompression und Dauer Sehr hohe Systemanforderungen
Passwortschutz und Header-Verschlüsselung möglich  

lzop

Das Komprimierungsprogramm lzop (Lempel-Ziv-Oberhumer-Packer) setzt den Schwerpunkt wie gzip auf die Geschwindigkeit des Pack- und Entpackprozesses und erzielt dabei im Schnitt sogar noch bessere Resultate als das GNU-Tool. Grundlage ist der namensgebende Lempel-Ziv-Oberhumer-Algorithmus (LZO), der 1996 ebenfalls unter der GNU General Public License (GPL) veröffentlicht wurde. Die ressourcenschonende Kompression arbeitet nach dem Wörterbuchverfahren: Wiederkehrende Zeichenfolgen werden durch ein Symbol ersetzt, das auf den entsprechenden Eintrag der gleichen, zuerst erfassten Zeichenfolge im Wörterbuch verweist. Die Daten werden dabei in Blöcken mit 256.000 Bytes (256 kB) abgearbeitet. Per Standardeinstellung bleibt die Originaldatei bei dem Prozess bestehen.

Neben einer erstklassigen Kompressionsgeschwindigkeit und der Kompatibilität zu gzip war bei der Entwicklung von lzop auch die Portabilität der Software ein wichtiges Thema. Aus diesem Grund existieren Versionen für nahezu alle Plattformen inklusive macOS und Windows. Komprimierte Dateien erhalten das Format .lzo.

Vorteile Nachteile
Komprimiert sehr schnell Kompressionsgrad aufgrund der hohen Geschwindigkeit eher gering
Hohe Portabilität  

Die gängigen Tools und Formate im tabellarischen Vergleich

  gzip bzip2 p7zip lzop
Betriebssystem plattformübergreifend Linux/Unix, Windows unixoide Linux, Win- dows, OS/2, Atari
Lizenz GNU GPL BSD-ähnlich GNU LGPL GNU GPL
Komprimierungs- verfahren Deflate-Algorithmus Burrows-Wheeler-Transformation, Move-to-Front-Transformation, Huffman-Kodierung LZMA-Algorith- mus LZO-Algorith- mus
Dateiformat .gz .bz2 .7z .lzo
Verschlüsselung     AES-256  
Kompressionsmodi 1-9 1-9 0-9 1, 3, 7-9
Stärken Guter Kompressionsgrad, sehr schnell Sehr guter Kompressionsgrad Erstklassiger Kompressions- grad, Verzeichnisse komprimierbar Sehr schnell, Verzeichnisse komprimierbar
Schwächen Nur einzelne Dateien komprimierbar Mittelmäßige Geschwindigkeit, nur einzelne Dateien komprimierbar Hohe Ansprüche an die System- leistung Schwacher Kompressions- grad

Die tabellarische Übersicht verrät, dass es nicht das eine, unverzichtbare Komprimierungstool gibt, sondern dass es bei der Wahl des geeigneten Programms vielmehr auf das Einsatzszenario ankommt. p7zip hat beispielsweise deutliche Vorteile, was die Kompressionsstärke angeht, und ermöglicht darüber hinaus die AES-256-Verschlüsselung der Daten, was überall dort von Wert ist, wo Sicherheit eine große Rolle spielt. Außerdem ist es mit p7zip wie auch mit lzop möglich, ganze Verzeichnisse zu komprimieren, während mit gzip und bzip2 immer nur einzelne Dateien verkleinert werden können. Andererseits stellt diese Leistungsstärke auch hohe Anforderungen an das System, weshalb sich p7zip für das Komprimieren im kleineren Rahmen weniger gut eignet.

So funktioniert die Datenkompression mit den Linux-Tools

Die genannten Packprogramme unterscheiden sich deutlich in Bezug auf ihre Kompressionsrate und -geschwindigkeit. Wenn es um die Syntax und Benutzung dieser nützlichen Tools geht, überwiegen jedoch klar die Gemeinsamkeiten. So sind sie allesamt auch ohne eine spezifische grafische Oberfläche oder einen Archiv-Manager über die Kommandozeile nutzbar, wobei Sie als Neuling schnell mit den verschiedenen Parametern und Befehlen vertraut sein werden. Beispielhaft zeigen wir Ihnen an dieser Stelle, wie Sie unter Linux Dateien mit bzip2 komprimieren und solche Dateien im Format .bz2 wieder entpacken.

Die allgemeine Syntax von bzip2 hat folgende Form:

bzip2 Optionen Datei(en)

Für den standardmäßigen Kompressionsprozess ist es nicht notwendig, Optionen anzugeben. Diese sind nur erforderlich, wenn Sie die Komprimierungseinstellungen verändern, das Übersichtsmenü aufrufen oder eine .bz2 entpacken wollen. Um z. B. das Textdokument test.txt einfach nur zu verpacken, genügt der Befehl

bzip2 test.txt

der die Originaldatei löscht und durch die komprimierte Datei test.txt.bz2 ersetzt. Indem Sie die jeweiligen Dokumente aneinanderreihen, können Sie mit einem einzigen Befehl auch mehrere Dateien verpacken:

bzip2 test.txt test2.txt test3.txt

Wollen Sie ein verpacktes Dokument dekomprimieren, ist es – wie bereits erwähnt – notwendig, den entsprechenden Optionen-Parameter (-d) zu setzen:

bzip2 -d test.txt

Die weiteren bzip2-Befehlsoptionen im Überblick:

Option Beschreibung
-1 … -9 Gibt den Grad der Komprimierung auf einer Skala von 1 bis 9 an, wobei 1 für die schwächste und 9 für die stärkste Stufe steht; voreingestellt ist der Wert 5
-f Startet die Komprimierung auch dann, wenn bereits eine .bz2-Datei gleichen Namens existiert; tritt ein solcher Fall ein, wird die bereits vorhandene Datei überschrieben
-c Schreibt das verpackte Dokument in die Standardausgabe (für gewöhnlich der Desktop)
-q Blockiert alle bzip2-Meldungen
-v Zeigt zusätzliche Informationen wie die Kompressionsrate für jede verarbeitete Datei
-t Überprüft die Integrität der ausgewählten Datei
-k Fügen Sie einem Komprimierungsbefehl diesen Parameter hinzu, bleibt die Originaldatei bestehen
-h Öffnet das Übersichtsmenü

Darum ist das Packprogramm tar so gefragt

Das Archivierungsprogramm tar ist seit über 30 Jahren im Einsatz und hat dabei kaum an Bedeutung verloren. Das liegt einerseits daran, dass man mit dem Tool die definierten Dateirechte bei der Archivierung beibehalten kann, vor allem aber an der Möglichkeit, komplette Verzeichnisse zu packen. Denn dieser Umstand macht tar zum perfekten Partner von Komprimierungstools wie gzip und bzip2, die nur einzelne Dateien komprimieren können.

Das Packprogramm fasst also im ersten Schritt alle Dateien des gewählten Verzeichnisses in einer einzelnen Archivdatei zusammen, indem die enthaltenen Dateien unverändert aneinandergehängt werden. Im zweiten Schritt folgt die Kompression mithilfe eines der spezifischen Komprimierungsprogramme. Als Ergebnis dieser Kompression, die als progressiv oder auch kompakt bzw. solide bezeichnet wird, erhalten die Archivdateien erweiterte Formatendungen wie .tar.gz (kurz: .tgz) und .tar.bz2 (kurz: .tbz2). Das Packprogramm macht es außerdem möglich, eine solche Datei, z. B. vom Typ .tar.gz, wieder zu entpacken.

tar-Archive: So können Sie .tar.gz und Co. unter Linux (ent)packen

Die Kombination aus tar und einem Komprimierungstool ist nicht obligatorisch, so dass Sie auch Dateien in einem Archiv zusammenfassen können, die Sie zuvor nicht verpackt haben bzw. nicht komprimieren wollen. Wenn Sie beispielsweise die beiden unkomprimierten Testdokumente test.txt und test2.txt in ein gemeinsames Archiv mit dem Namen archiv.tar verfrachten wollen, genügt folgender Befehl:

tar -cf archiv.tar test.txt test2.txt

Um dieses Archiv unter Linux wieder zu entpacken, ersetzen Sie den Parameter -c (ein neues Archiv erzeugen) durch -x (Dateien aus einem Archiv extrahieren). Insofern nicht ausschließlich ein bestimmter Archivbestandteil entpackt werden soll, fällt dabei die Angabe der Datei(en) weg:

tar -xf archiv.tar

Beabsichtigen Sie alternativ, ein komprimiertes Archiv – beispielsweise auf Basis der gzip-Kompression inklusive der erweiterten Formatendung .tar.gz – zu packen, bietet tar ebenfalls die passenden Möglichkeiten. Da das Programm Optionen für die Komprimierung und Dekomprimierung mit den Packprogrammen bzip2, xz, compress und gzip implementiert hat, gelingt dieses Vorhaben ebenfalls mit einem einzigen Befehl:

tar -czf archiv.tar.gz test.txt test2.txt

Der Befehl zum .tar.gz-Entpacken unterscheidet sich von dem Pendant für unkomprimierte Verzeichnisse ebenfalls nur durch die Angabe des Packprogramm-Parameters:

tar -xzf archiv.tar.gz
Tipp

Der Parameter -f, mit dessen Hilfe die jeweilige Archivdatei ausgewählt werden kann, muss stets an letzter Stelle stehen, da die nachfolgenden Zeichen konsequenterweise immer als Datei interpretiert werden.

Die wichtigsten Befehle der Archivierungsanwendung

Zusätzlich zu den gerade aufgezählten Befehlsoptionen für eine einfache Archivierung Ihrer Dateien existieren eine Reihe weiterer Parameter, mit denen Sie größtenteils den Pack- bzw. Entpackprozess spezifizieren. Dazu zählen beispielsweise die erwähnten Kompressionsmethoden, aber auch Einstellungsmöglichkeiten für Verzeichnisse sowie Optionen zur Überprüfung und Vorschau der tar-Archive, wie die tabellarische Auflistung unter Beweis stellt:

Option Beschreibung
--help Ruft das tar-Übersichtsmenü auf
-c Erzeugt ein neues Archiv
-d Ermöglicht es, Dateien im Archiv und im Dateisystem miteinander zu vergleichen
-f Schreibt die ausgewählten Dateien in ein Archiv mit dem angegebenen Dateinamen; liest die Daten aus dem Archiv mit dem angegebenen Dateinamen
-j Komprimiert Archive mit bzip2 oder entpackt derartige Archive
-J Komprimiert Archive mit xz oder entpackt derartige Archive
-k Verhindert, dass existierende Dateien beim Extrahieren aus einem Archiv überschrieben werden
-p Sorgt dafür, dass Zugriffsrechte beim Extrahieren bestehen bleiben
-r Fügt Dateien einem bereits bestehenden Archiv hinzu
-t Zeigt den Inhalt des ausgewählten Archivs an
-u Hängt einem Archiv nur solche Dateien an, die jünger sind als ihre Archiv-Version
-x Entpackt Dateien aus einem Archiv
-z Komprimiert Archive mit gzip oder entpackt derartige Archive
-Z Komprimiert Archive mit compress oder entpackt derartige Archive
-A Implementiert den Inhalt eines Archivs in ein anderes Archiv
-C Wechselt in das angegebene Verzeichnis, um das ausgewählte Archiv anschließend dort zu entpacken
-M Option zum Anlegen, Anzeigen oder Extrahieren eines mehrteiligen Archivs
-W Überprüft das Archiv nach dem Archivierungsprozess
Tipp

Einige Optionen wie das Hinzufügen von Dateien an bestehende Archive (-r) funktionieren nicht mit komprimierten Archiven. Diese müssen also zunächst entpackt werden.

Beispiele:

Inhalt eines Archivs anzeigen

tar -tf archiv.tar

Inhalt eines Archivs aktualisieren (berücksichtigt keine Unterverzeichnisse!)

tar -uf archiv.tar Datei(en)

Inhalt eines Archivs erweitern

tar -rf archiv.tar Neue Datei

Inhalt eines Archivs mit dem Dateisystem vergleichen (im Archiv-Verzeichnis auszuführen!)

tar -dvf archiv.tar

File Roller: Der Archiv-Manager für GNOME

File Roller ist eine grafische Benutzeroberfläche für verschiedenste Komprimierungstools und Packprogramme, die standardmäßig über die Kommandozeile ausgeführt werden. Der Archiv-Manager ist für die Desktop-Umgebungen GNOME und Unity verfügbar und wird seit 2001 unter der GNU General Public License verbreitet. Es erlaubt, den Inhalt diverser Archivdateien anzuzeigen und Dateien daraus zu entpacken oder zu löschen sowie weitere hinzuzufügen. Auch die Erzeugung neuer komprimierter oder unveränderter Dateien und Archive sowie die Umwandlung in ein anderes Format sind möglich. Zu diesem Zweck bietet das Hauptfenster der Software verschiedene Schaltflächen und Menüs sowie eine Drag-and-Drop-Funktion.

Neben den tar-Archiv-Formaten wie .tar.gz unterstützt File Roller u. a. folgende Formate:

  • .7z
  • .tar
  • .gzip
  • .bzip2
  • .ar
  • .jar
  • .cpio

File Roller ist standardmäßig bei einigen Linux-Distributionen wie Ubuntu vorinstalliert, kann aber alternativ mithilfe des jeweiligen Paket-Managers nachinstalliert oder auf der offiziellen Homepage heruntergeladen werden. Eine Alternative für die Desktop-Umgebung KDE ist Ark.

Tools Betriebssysteme Open-Source Tutorials