Ubuntu Linux: Zip-Dateien packen & entpacken im Terminal

Einführung

In Linux-Systemen gehört die platzsparende Archivierung und Bereitstellung von Datenbeständen zu den täglichen Administrationsaufgaben. Das bewährte zip-Werkzeug bietet hierfür eine plattformübergreifende Lösung. In diesem Praxiseitfaden erfahren Sie Schritt für Schritt, wie Sie die erforderlichen Pakete einrichten, einzelne oder mehrere Dokumente bündeln, komplette Ordnerbäume rekursiv verpacken, Archive wieder extrahieren und gezielt Dateien beim Packvorgang ausschließen.

Paketinstallation und erste Schritte beim Archivieren

Um mit der Archivierung unter Ubuntu zu starten, aktualisieren wir zunächst die Paketquellen und spielen die Programme zip sowie unzip über den Paketmanager ein: apt-get update -qq && apt-get install -y zip unzip.

Installation der Pakete zip und unzip via apt

Für unsere Tests richten wir eine saubere Arbeitsumgebung ein und wechseln direkt dorthin: mkdir -p ~/zip_demo && cd ~/zip_demo.

Erstellen und Wechseln in das Testverzeichnis

Nun erzeugen wir eine erste Textdatei als Beispieldaten: echo "Sample text file 1" > file1.txt.

Erstellung der ersten Textdatei

Ein zweites Testdokument wird direkt mit folgendem Aufruf angelegt: echo "Sample text file 2" > file2.txt.

Erstellung der zweiten Textdatei

Das Kommando zip fasst beliebig viele Ausgangsdateien zu einem kompakten .zip-Archiv zusammen.
Mit der Anweisung archive.zip fassen wir file1.txt und file2.txt in einer gemeinsamen Datei zusammen.
⚙️ [Wichtige Parameter im Überblick]

-r : Durchläuft Verzeichnisse rekursiv und nimmt sämtliche Unterordner sowie Dateien mit auf.
-e : Schützt das Archiv durch eine interaktive Kennworteingabe.
-u : Bringt das Archiv auf den neuesten Stand, indem nur geänderte oder neue Dateien ergänzt werden.
-m : Löscht die Ausgangsdateien nach erfolgreichem Packen vom Datenträger (Verschiebemodus).
-d : Entfernt gezielt einzelne Elemente direkt aus einem existierenden Archiv.
-q : Unterdrückt Konsolenausgaben und führt den Vorgang lautlos aus (Quiet-Modus).
-0 bis -9 : Definiert die Kompressionsintensität von 0 (keine Kompression, nur Speichern) bis 9 (höchste Verdichtung).

Kombiniertes Archiv aus zwei Dateien erstellen

Ein schneller Blick auf die Metadaten und Dateigröße des neuen Archivs gelingt mit ls -lh archive.zip.

Überprüfung der erstellten Archivdatei mit ls

Ganze Ordner rekursiv sichern (-r) und Kompressionsstufen steuern (-9)

Wir stellen sicher, dass wir uns für die folgenden Verzeichnisoperationen im Verzeichnis ~/zip_demo befinden.

Wechsel in den Demopfad

Um eine realistische Projektstruktur abzubilden, legen wir mit mkdir -p project/src project/logs zwei verschachtelte Ordner an.

Erstellung geschachtelter Projektverzeichnisse

Im Quellcode-Ordner platzieren wir eine simulierte Skriptdatei via echo "console.log('App running');" > project/src/app.js.

Anlegen einer Skriptdatei im Quellcodeordner

Zusätzlich erzeugen wir eine Protokolldatei: echo "System initialized" > project/logs/app.log.

Generieren einer Logdatei

Damit nicht nur der Hauptordner, sondern sämtliche Ebenen darunter erfasst werden, übergeben wir den Parameter -r. Mit project.zip packen wir das gesamte Verzeichnis project samt Inhalt ein.
Die Ausgabe im Terminal belegt, dass alle Unterpfade lückenlos im Archiv gelandet sind.

Rekursives Verpacken des gesamten Verzeichnisses

Möchte man den Speicherbedarf auf ein absolutes Minimum drücken, kombiniert man den Schalter -9 mit -r, um project_max.zip zu generieren.
Dieser Modus beansprucht zwar etwas mehr CPU-Zeit beim Berechnen, liefert dafür aber die geringste Dateigröße.

Archivierung mit maximaler Kompressionsstufe

Ein Größenvergleich zwischen dem Standardarchiv project.zip und der maximal komprimierten Variante project_max.zip lässt sich über ls -lh project*.zip anstellen.

Größenvergleich der generierten Archive

Archivinhalte einsehen (-l) und gezielt entpacken (-d)

Bevor wir Dateien entpacken, stellen wir mit dem Wechsel nach ~/zip_demo die richtige Umgebung sicher.

Navigieren in das Arbeitsverzeichnis

Oft möchte man vor dem Extrahieren wissen, was sich im Paket befindet. Über das Tool unzip und den Schalter -l wird der Inhalt von project.zip samt Dateigrößen und Zeitstempeln tabellarisch aufgelistet, ohne dass Dateien auf die Festplatte geschrieben werden.

Auflistung der Dateien im Archiv ohne Entpacken

Um ein Vermischen mit anderen Projektdaten zu vermeiden, erstellen wir ein separates Zielverzeichnis: mkdir -p ~/zip_demo/extracted.

Anlegen des Zielverzeichnisses zum Entpacken

Mit der Option -d steuern wir den Zielort für die Extraktion präzise an. Der Aufruf entpackt project.zip sauber in den Ordner ~/zip_demo/extracted, sodass das aktuelle Verzeichnis aufgeräumt bleibt.
Anhand der Terminalausgabe lässt sich nachvollziehen, wie die ursprüngliche Ordnerstruktur im angegebenen Zielpfad rekonstruiert wird.

Entpacken in einen separaten Zielordner

Mit ls -R ~/zip_demo/extracted überprüfen wir rekursiv, ob alle Unterordner und Dateien vollständig am Bestimmungsort angekommen sind.

Prüfung der wiederhergestellten Verzeichnisstruktur

Unerwünschte Dateitypen ausblenden (-x) und Archive mit Passwort sichern

Wir wechseln wieder zurück in den zentralen Übungsordner ~/zip_demo.

Rückkehr zum Ausgangsverzeichnis

Beim Packen von Softwareprojekten sollen temporäre Daten oder Logdateien häufig außen vor bleiben. Mit dem Parameter -x und dem Muster "*.log" weisen wir zip an, alle Logdateien beim rekursiven Packen des project-Ordners zu ignorieren. Das Ergebnis wird in project_no_logs.zip gespeichert.
Das Protokoll der Befehlsausführung zeigt deutlich, dass die Textdateien zwar einfließen, .log-Dateien jedoch übersprungen werden.

Ausschluss von Logdateien beim Archivieren

Mittels unzip -l project_no_logs.zip werfen wir einen Kontrollblick in die neue Archivdatei.
In der Auflistung bestätigt sich: Die Datei app.log wurde planmäßig herausgefiltert.

Kontrolle des gefilterten Archivinhalts

Für vertrauliche Daten bietet zip eine Verschlüsselungsfunktion direkt über die Kommandozeile: Mit dem Schalter -P übergeben wir das gewünschte Passwort und sichern mit -r den Quellordner project/src in die Datei project_encrypted.zip.
Damit sind Quellcode und vertrauliche Informationen gegen unbefugten Zugriff geschützt.

Erstellen eines passwortgeschützten Archivs

Abschließend verschaffen wir uns mit ls -lh project_*.zip eine Übersicht über alle erzeugten Archive und deren jeweilige Dateigrößen im Testverzeichnis.

Auflistung sämtlicher erzeugter Archivdateien

Damit haben Sie die wichtigsten Techniken zur flexiblen Dateikomprimierung und -verwaltung unter Ubuntu Linux kennengelernt.
Durch die geschickte Kombination der vorgestellten Parameter gestalten Sie Ihre Sicherungs- und Bereitstellungsprozesse auf der Linux-Kommandozeile künftig deutlich schneller und sicherer.