zip — ZIP-Archive erstellen und entpacken
Praxis-Guide zu zip und unzip: ZIP-Archive erstellen, entpacken, komprimieren und filtern – das universellste Archivformat über alle Betriebssysteme.
zip und unzip sind die Klassiker für das ZIP-Format – das einzige Archivformat, das du praktisch überall öffnen kannst, von Windows über macOS bis Linux. Mit zip packst und komprimierst du Dateien in einem Schritt, mit unzip holst du sie wieder heraus. Dieser Guide zeigt dir die wichtigsten Befehle für den Alltag: rekursives Packen, Komprimierungsstufen, Ausschluss-Muster, Verschlüsselung und das gezielte Entpacken einzelner Dateien.
Archive erstellen
zip <archive>.zip <files> — Erstellt ein ZIP-Archiv aus einzelnen Dateien.
zip backup.zip file1.txt file2.txtzip -r <archive>.zip <dir> — Erstellt ein ZIP-Archiv aus einem Verzeichnis (rekursiv).
zip -r project.zip project/zip -j <archive>.zip <files> — Erstellt ein Archiv ohne Verzeichnispfade (Pfade verwerfen).
zip -j flat.zip path/to/file1.txt path/to/file2.txtzip -<level> <archive>.zip <files> — Legt die Komprimierungsstufe fest (0=speichern, 1=schnellste, 9=beste).
zip -9 best.zip largefile.datzip -0 <archive>.zip <files> — Speichert Dateien ohne Komprimierung (schneller bei bereits komprimierten Daten).
zip -0 images.zip *.jpgHinzufügen, Aktualisieren & Löschen
zip -u <archive>.zip <files> — Aktualisieren: fügt neue oder geänderte Dateien zu einem bestehenden Archiv hinzu.
zip -u backup.zip newfile.txtzip -d <archive>.zip <files> — Löscht Dateien aus einem bestehenden Archiv.
zip -d backup.zip oldfile.txtzip -g <archive>.zip <files> — Anhängen (grow): hängt Dateien an ein bestehendes Archiv an.
zip -g backup.zip extra.txtAusschließen & Filtern
zip -r <archive>.zip <dir> -x '<pattern>' — Erstellt ein Archiv und schließt Dateien aus, die auf ein Muster passen.
zip -r project.zip project/ -x '*.git*' '*node_modules*'zip -r <archive>.zip <dir> -x '*.log' '*.tmp' — Schließt mehrere Dateimuster aus.
zip -r deploy.zip src/ -x '*.log' '*.tmp' '*.test.js'zip -r <archive>.zip <dir> -i '*.php' '*.html' — Nimmt nur Dateien auf, die auf die Muster passen.
zip -r code.zip project/ -i '*.php' '*.html' '*.css'Verschlüsselung & Aufteilen
zip -e <archive>.zip <files> — Erstellt ein passwortgeschütztes ZIP-Archiv (fragt das Passwort interaktiv ab).
zip -e -r secret.zip confidential/zip -P '<password>' <archive>.zip <files> — Erstellt ein verschlüsseltes Archiv mit Passwort direkt auf der Kommandozeile (landet unsicher in der Shell-History).
zip -P 'mypass' secret.zip file.txtzip -s <size> -r <archive>.zip <dir> — Erstellt ein aufgeteiltes Archiv (mehrteilig).
zip -s 100m -r large.zip bigfolder/unzip — Entpacken
unzip <archive>.zip — Entpackt alle Dateien aus einem ZIP-Archiv.
unzip backup.zipunzip <archive>.zip -d <dir> — Entpackt in ein bestimmtes Verzeichnis.
unzip backup.zip -d /tmp/restore/unzip <archive>.zip '<file>' — Entpackt nur bestimmte Dateien.
unzip backup.zip 'config.yaml'unzip -o <archive>.zip — Überschreibt vorhandene Dateien ohne Nachfrage.
unzip -o update.zip -d /var/www/unzip -n <archive>.zip — Überschreibt vorhandene Dateien niemals.
unzip -n backup.zipunzip -l <archive>.zip — Listet den Inhalt eines ZIP-Archivs auf, ohne zu entpacken.
unzip -l backup.zipunzip -t <archive>.zip — Prüft die Integrität des Archivs, ohne zu entpacken.
unzip -t backup.zipunzip -p <archive>.zip '<file>' — Entpackt eine Datei nach stdout (an einen anderen Befehl weiterleiten).
unzip -p backup.zip config.json | jq . Fazit
Das ZIP-Format glänzt vor allem durch seine Allgegenwart: Wer ein Archiv plattformübergreifend weitergeben will, liegt mit zip fast nie falsch. Verlass dich aber nicht auf die eingebaute Verschlüsselung – das klassische ZipCrypto-Verfahren (zip -e, zip -P) gilt als schwach und leicht zu brechen, und -P schreibt dein Passwort obendrein in die Shell-History. Für echte Vertraulichkeit greifst du besser zu AES-fähigen Werkzeugen wie 7-Zip oder zu age bzw. GPG.
Weiterführende Links
- Info-ZIP – offizielle Projektseite – Heimat von zip und unzip, mit Dokumentation und Quellcode (englisch)
- zip(1) – Linux man-page – vollständige Optionsreferenz zum zip-Befehl (englisch)