zip-Befehl: Ordner komprimieren, mit unzip entpacken und Komprimierungsoptionen
Der zip-Befehl fasst unter Linux Dateien und Ordner in einer einzigen zip-Datei zusammen und komprimiert sie; zum Entpacken verwendest du unzip. Auf einem AlmaLinux-9-Server schrumpfte ein Website-Ordner mit zip -r von 35.825 Byte auf 4.158 Byte, und unzip -O reparierte die verstümmelten Dateinamen in einer unter Windows erstellten zip-Datei.
Die Ausgaben unten stammen aus einem Arbeitsordner auf einem AlmaLinux-9.8-Server, ausgeführt als root, mit Zeiten in UTC. Der komprimierte site-Ordner und die Notizdateien sind für den Test angelegte Beispieldateien. Die unter Windows erstellte zip wurde mit einer Testdatei nachgestellt, deren Dateinamen in CP949 gespeichert sind.
1️⃣ So verwendest du den zip-Befehl
Hinter zip schreibst du zuerst den Namen der neuen zip-Datei und danach die Dateien, die hinein sollen. Der Befehl unten komprimiert die zwei Dateien readme.txt und memo.txt in eine einzige notes.zip.
zip notes.zip readme.txt memo.txt adding: readme.txt (deflated 92%)
adding: memo.txt (stored 0%)Das [deflated 92%] am Zeilenende gibt an, um wie viel die Datei gegenüber der Originalgröße kleiner wurde. Das [stored 0%] in der Zeile der 71 Byte großen memo.txt bedeutet, dass sie unkomprimiert in Originalgröße gespeichert wurde.
Um einen Ordner zu komprimieren, hängst du -r an. Schreibst du ohne -r nur den Ordnernamen, landet nur der Ordnereintrag site/ im Archiv, die Dateien darin nicht.
zip nodir.zip site adding: site/ (stored 0%)Der zu komprimierende site-Ordner besteht wie unten aus drei Unterordnern und sechs Dateien.
Mit -r kommen alle zehn Einträge hinein: die Unterordner, die Dateien darin und sogar .htaccess, deren Name mit einem Punkt beginnt.
zip -r site.zip site adding: site/ (stored 0%)
adding: site/css/ (stored 0%)
adding: site/css/style.css (deflated 93%)
adding: site/js/ (stored 0%)
adding: site/js/app.js (deflated 87%)
adding: site/logs/ (stored 0%)
adding: site/logs/access.log (deflated 94%)
adding: site/index.html (deflated 91%)
adding: site/about.html (deflated 87%)
adding: site/.htaccess (deflated 9%)Was in einer fertigen zip-Datei steckt, prüfst du ohne Entpacken mit unzip -l. Die gespeicherten Dateien ergaben zusammen 35.825 Byte, und ls -l zeigte site.zip mit 4.158 Byte.
unzip -l site.zipArchive: site.zip
Length Date Time Name
--------- ---------- ----- ----
0 10-28-2026 22:10 site/
0 10-28-2026 22:10 site/css/
4431 10-28-2026 22:10 site/css/style.css
0 10-28-2026 22:10 site/js/
1882 10-28-2026 22:10 site/js/app.js
0 10-28-2026 22:10 site/logs/
24134 10-28-2026 22:10 site/logs/access.log
3723 10-28-2026 22:10 site/index.html
1612 10-28-2026 22:10 site/about.html
43 10-28-2026 22:10 site/.htaccess
--------- -------
35825 10 filesls -l site.zip-rw-r--r-- 1 root root 4158 Oct 28 23:05 site.zip2️⃣ Optionen des zip-Befehls
Unter den Optionen des zip-Befehls schließt -x Dateien per Muster aus. Gibst du [site/logs/*] an, um den Log-Ordner auszulassen, fallen der Ordner logs und access.log weg, und nur acht Einträge kommen hinein.
zip -r site-nolog.zip site -x 'site/logs/*' adding: site/ (stored 0%)
adding: site/css/ (stored 0%)
adding: site/css/style.css (deflated 93%)
adding: site/js/ (stored 0%)
adding: site/js/app.js (deflated 87%)
adding: site/index.html (deflated 91%)
adding: site/about.html (deflated 87%)
adding: site/.htaccess (deflated 9%)Setze das Muster in einfache Anführungszeichen, damit die Shell [*] nicht vorher in Dateinamen umwandelt. Das offizielle Handbuch zeigt für denselben Zweck ein Beispiel mit einem Backslash vor [*].
-u packt nur die Dateien neu ein, die sich nach dem Erstellen der zip-Datei geändert haben. Nachdem eine Zeile ans Ende von index.html angehängt wurde, wird mit -ru nur diese eine Datei als [updating] neu eingepackt.
zip -ru site.zip siteupdating: site/index.html (deflated 90%)Derselbe Befehl gab ohne geänderte Dateien beim zweiten Lauf nichts aus, und der Exit-Code war 12. Laut offiziellem Handbuch bedeutet 12, dass zip nichts zu tun hat.
zip -ru site.zip site; echo $?12Um Einträge in einer zip-Datei zu löschen, verwendest du -d. Mit [site/logs/*] werden der Eintrag des Ordners logs und access.log aus site.zip gelöscht.
zip -d site.zip 'site/logs/*'deleting: site/logs/
deleting: site/logs/access.logDie Zahlen -0 bis -9 sind die Komprimierungsstufe; laut offiziellem Handbuch ist der Standard -6. Derselbe site-Ordner wurde dreimal mit -q ohne Ausgabe komprimiert, um die Größen zu vergleichen. Weil beim -u-Test eine Zeile in index.html hinzukam, beträgt die Summe der Originaldateien jetzt 35.875 Byte.
zip -qr -0 level0.zip sitezip -qr level6.zip sitezip -qr -9 level9.zip sitels -l level*.zip-rw-r--r-- 1 root root 37433 Oct 28 23:05 level0.zip
-rw-r--r-- 1 root root 4179 Oct 28 23:05 level6.zip
-rw-r--r-- 1 root root 3874 Oct 28 23:05 level9.zip| Kompressionsstufe | Größe der zip-Datei | Im Vergleich zur Originalsumme |
|---|---|---|
| Summe der Originaldateien | 35.875 Byte | 100% |
| -0 (keine Komprimierung) | 37.433 Byte | 104.3% |
| -6 (Standard) | 4.179 Byte | 11.6% |
| -9 (stärkste Komprimierung) | 3.874 Byte | 10.8% |
Die mit -0 erstellten 37.433 Byte waren größer als die Originalsumme von 35.875 Byte. Das sind die unkomprimierten Daten plus 1.558 Byte Kopfdaten wie Dateinamen und Zeiten, die an jeden Eintrag angehängt werden. -9 war 305 Byte kleiner als der Standard, und der ganze Unterschied stammte von der größten Datei, access.log.
Für ein Passwort hängst du -e an. Das Passwort gibst du zweimal ein, und die Zeichen erscheinen nicht auf dem Bildschirm.
zip -e secret.zip memo.txtEnter password:
Verify password:
adding: memo.txt (stored 0%)Auch die mit -e erstellte secret.zip zeigte unter unzip -l Dateinamen, Größen und Datum ohne Passwort. Verschlüsselt wird nur der Dateiinhalt; für Material, bei dem auch die Dateinamen verborgen bleiben müssen, passt das nicht.
unzip -l secret.zipArchive: secret.zip
Length Date Time Name
--------- ---------- ----- ----
71 10-28-2026 22:10 memo.txt
--------- -------
71 1 file-P, das das Passwort direkt in die Befehlszeile schreibt, ist laut offiziellem Handbuch unsicher, weil andere Benutzer auf demselben Server laufende Befehle sehen können. Das Handbuch beschreibt auch die Standardverschlüsselung von zip selbst als relativ schwach.
Beim Entpacken einer mit -e erstellten zip fragt unzip für jede Datei nach dem Passwort, und mit dem richtigen Passwort wird die Datei entpackt.
unzip secret.zip -d decArchive: secret.zip
[secret.zip] memo.txt password:
extracting: dec/memo.txt📌 Wichtige Optionen: Ergebnisse aus diesem Artikel
| Option | Was es tut | Ergebnis in diesem Artikel | |
|---|---|---|---|
| zip -r | Packt alle Unterordner und Dateien im Ordner ein | Ohne -r eine Zeile adding: site/, mit -r zehn Einträge einschließlich .htaccess | |
| zip -x | Schließt Dateien per Muster aus | Ohne site/logs/* nur acht Einträge, ohne den Ordner logs und access.log | |
| zip -u | Packt nur Dateien neu ein, die sich nach dem Erstellen der zip-Datei geändert haben | Eine Zeile updating: site/index.html (deflated 90%); ohne Änderungen keine Ausgabe und Exit-Code 12 | |
| zip -d | Löscht Einträge in der zip-Datei | deleting: site/logs/ und deleting: site/logs/access.log | |
| zip -q | Blendet die Zeilen beim Komprimieren aus | Alle drei mit -qr komprimierten Befehle (-0, Standard, -9) enden ohne adding-Zeilen | |
| zip -0 | Speichert nur, ohne zu komprimieren | level0.zip mit 37433 Byte größer als die Originalsumme | |
| zip -9 | Komprimiert so klein wie möglich (Standard -6) | level9.zip 3874 Byte, die mit dem Standard erstellte level6.zip 4179 Byte | |
| zip -e | Fragt nach einem Passwort und verschlüsselt den Inhalt | Fragt Enter password: und Verify password:, dann adding: memo.txt (stored 0%) | |
| unzip -l | Listet die gespeicherten Einträge auf, ohne zu entpacken | site.zip mit 10 files, zusammen 35825 Byte | |
| unzip -d | Legt den Zielordner fest und erstellt ihn, wenn es ihn nicht gibt | Beginnt mit creating: restore/site/, und die site-Ordnerstruktur wird unter restore entpackt | |
| unzip -o | Überschreibt alle vorhandenen Dateien ohne Nachfrage | Fünf inflating-Zeilen ohne Nachfrage | |
| unzip -n | Überspringt vorhandene Dateien ohne Nachfrage | Nach der Zeile Archive: site.zip erscheint nichts | |
| unzip -t | Prüft die komprimierten Daten, ohne zu entpacken | OK für jeden Eintrag und No errors detected; die abgeschnittene broken.zip ergibt End-of-central-directory signature not found | |
| unzip -O | Legt die Zeichenkodierung der Dateinamen in der zip fest | Mit -O CP949 erscheinen die verstümmelten Namen als 보고서.txt und 견적서.txt (koreanisch für „Bericht“ und „Angebot“) | |
| unzip -p | Schickt den entpackten Inhalt an die Standardausgabe, statt Dateien anzulegen | Nur die zwei Zeilen von .htaccess erscheinen, ohne dass eine Datei entsteht |
📎 Weitere Optionen: laut offiziellem Handbuch
| Option | Was es tut | |
|---|---|---|
| zip -m | Löscht nach dem Komprimieren die Originaldateien und -ordner (erst wenn die zip-Datei fertig ist; das offizielle Handbuch empfiehlt die Kombination mit -T) | |
| zip -j | Speichert nur Dateinamen, ohne Ordnerpfade | |
| zip -y | Speichert einen symbolischen Link als Link statt der Datei, auf die er zeigt | |
| zip -T | Prüft die neue zip-Datei und lässt die ursprüngliche zip-Datei unverändert, wenn die Prüfung fehlschlägt | |
| zip -f | Ersetzt nur Einträge, die schon in der zip-Datei sind, durch geänderte Dateien und fügt keine neuen hinzu | |
| zip -i | Packt nur Dateien ein, die zum angegebenen Muster passen | |
| zip -P | Schreibt das Passwort direkt in die Befehlszeile (laut offiziellem Handbuch unsicher) | |
| unzip -j | Entpackt nur die Dateien in einen Ordner, ohne die Ordnerstruktur der zip anzulegen | |
| unzip -x | Legt Einträge fest, die nicht entpackt werden | |
| unzip -q | Blendet die Zeilen beim Entpacken aus | |
| unzip -u | Entpackt nur Dateien, die auf der Festplatte fehlen oder neuer sind | |
| unzip -v | Zeigt in der Liste auch Komprimierungsmethode, komprimierte Größe, Verhältnis und CRC |
3️⃣ So verwendest du den unzip-Befehl
Um eine zip-Datei unter Linux zu entpacken, schreibst du den Namen der zip-Datei hinter unzip. Ohne -d für einen Zielordner wird in den aktuellen Ordner entpackt (laut offiziellem Handbuch), deshalb wurde diesmal der Ordner restore angegeben.
unzip site.zip -d restoreArchive: site.zip
creating: restore/site/
creating: restore/site/css/
inflating: restore/site/css/style.css
creating: restore/site/js/
inflating: restore/site/js/app.js
inflating: restore/site/index.html
inflating: restore/site/about.html
inflating: restore/site/.htaccessGibt es den mit -d angegebenen Ordner nicht, legt unzip ihn an und entpackt die site-Ordnerstruktur unverändert darunter.
Entpackst du noch einmal an dieselbe Stelle, hält unzip bei jeder vorhandenen Datei an und fragt, ob sie überschrieben werden soll. Mit [N]one endet der Vorgang, ohne eine der restlichen Dateien zu überschreiben.
unzip site.zip -d restoreArchive: site.zip
replace restore/site/css/style.css? [y]es, [n]o, [A]ll, [N]one, [r]ename: NOhne Nachfrage geht es mit -o oder -n. -o überschreibt alle vorhandenen Dateien, -n überspringt sie. Da das offizielle Handbuch -o als gefährliche Option aufführt, prüfst du vorher, ob der Ordner überschrieben werden darf, und hängst erst dann -o an.
unzip -o site.zip -d restoreArchive: site.zip
inflating: restore/site/css/style.css
inflating: restore/site/js/app.js
inflating: restore/site/index.html
inflating: restore/site/about.html
inflating: restore/site/.htaccessunzip -n site.zip -d restoreArchive: site.zipEntpackst du mit -n an eine Stelle, an der alle Dateien schon vorhanden sind, erscheint nach der Archive-Zeile nichts.
Um nur einen Teil einer zip-Datei zu entpacken, schreibst du hinter den Dateinamen einen Pfad oder ein Muster. Mit [site/css/*] werden nur der Ordner css und style.css entpackt.
unzip site.zip 'site/css/*' -d partArchive: site.zip
creating: part/site/css/
inflating: part/site/css/style.css4️⃣ unzip-Fehler
Eine zip-Datei von einem anderen Server prüfst du vor dem Entpacken mit unzip -t. Sind die komprimierten Daten in Ordnung, erscheint bei jedem Eintrag OK und in der letzten Zeile [No errors detected].
unzip -t site.zipArchive: site.zip
testing: site/ OK
testing: site/css/ OK
testing: site/css/style.css OK
testing: site/js/ OK
testing: site/js/app.js OK
testing: site/index.html OK
testing: site/about.html OK
testing: site/.htaccess OK
No errors detected in compressed data of site.zip.Eine zip, deren Ende durch eine abgebrochene Übertragung fehlte, endete mit [End-of-central-directory signature not found]. Das ist das Ergebnis der Prüfung mit -t einer broken.zip, die nur die ersten 2.000 Byte von site.zip behielt; site.zip war nach dem Löschen der logs-Einträge mit -d 2.436 Byte groß.
unzip -t broken.zipArchive: broken.zip
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
unzip: cannot find zipfile directory in one of broken.zip or
broken.zip.zip, and cannot find broken.zip.ZIP, period.unzip liest zuerst die Dateiliste ganz am Ende einer zip-Datei (das central directory). Deshalb konnte es bei der am Ende abgeschnittenen broken.zip nicht einmal den ersten Eintrag prüfen.
Eine Datei, die keine zip ist, ergab dieselbe Meldung. site.tar.gz, mit tar gebündelt, endete in unzip mit demselben Fehler; eine tar.gz-Datei entpackst du mit dem tar-Befehl.
unzip site.tar.gzArchive: site.tar.gz
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
unzip: cannot find zipfile directory in one of site.tar.gz or
site.tar.gz.zip, and cannot find site.tar.gz.ZIP, period.Eine unter Windows erstellte zip-Datei speichert die Dateinamen manchmal in einer Windows-Zeichenkodierung statt in UTF-8. Als report-win.zip, deren Namen in CP949 gespeichert sind, auf einem UTF-8-Server mit unzip -l geöffnet wurde, erschienen die Dateinamen als unlesbare Zeichen.
unzip -l report-win.zipArchive: report-win.zip
Length Date Time Name
--------- ---------- ----- ----
26 10-28-2026 22:10 ║╕░э╝н.txt
17 10-28-2026 22:10 ░▀└√╝н.txt
--------- -------
43 2 filesSchreibst du hinter -O die Zeichenkodierung des Windows, mit dem die zip erstellt wurde, erscheinen die Namen richtig, und mit derselben Option entpackte Dateien werden mit ihrem ursprünglichen Namen angelegt.
unzip -O CP949 -l report-win.zipArchive: report-win.zip
Length Date Time Name
--------- ---------- ----- ----
26 10-28-2026 22:10 보고서.txt
17 10-28-2026 22:10 견적서.txt
--------- -------
43 2 filesunzip -O CP949 report-win.zip -d winArchive: report-win.zip
inflating: win/보고서.txt
inflating: win/견적서.txtLaut unzip-Hilfe ist -O die Option für zip-Dateien aus DOS und Windows und -I die für zip-Dateien aus anderen Systemen.
Die Fehlermeldungen beim Entpacken und was du als Nächstes prüfst, stehen unten.
| Ausgabe | Bedeutung | Als Nächstes prüfen |
|---|---|---|
| End-of-central-directory signature not found | Die Dateiliste am Ende der zip-Datei wurde nicht gefunden – die Datei ist abgeschnitten oder keine zip | Größe mit dem Original vergleichen und neu herunterladen · tar.gz mit tar |
| cannot find or open | Keine Datei mit diesem Namen im aktuellen Ordner | Dateiname und Ort mit ls |
| skipping: … incorrect password | Das Passwort war dreimal falsch, die Datei wurde übersprungen (Exit-Code 82) | Groß- und Kleinschreibung des Passworts und Eingabesprache |
| Dateinamen erscheinen als Zeichensalat | Namen in einer Windows-Zeichenkodierung gespeichert | Diese Kodierung (z. B. CP949) hinter -O |
🔲 zip-Befehl-Simulator
Im Simulator unten kannst du die Schritte selbst eingeben: mit zip komprimieren und mit unzip auflisten oder entpacken.
🔢 FAQ & empfohlene Inhalte
WordPress · Plugins
WordPress Plugin installieren: über die Suche installieren, ZIP hochladen und aktivieren
Die Schritte, um ein Plugin über den Bildschirm „Plugins hinzufügen“ zu installieren – per Suche im offiziellen Verzeichnis oder durch Hochladen einer zip-Datei.
Suche
Linux-Befehl find
Der find-Befehl sucht Dateien nach Bedingungen wie Name, Endung, Größe und Datum und arbeitet mit den gefundenen Dateien direkt weiter.
Dateiverwaltung
cp-Befehl: Optionen und Dateien gesammelt überschreiben
Die Optionen des cp-Befehls zum Kopieren von Dateien und Verzeichnissen und wie du ohne Rückfrage zum Überschreiben gesammelt kopierst.
ℹ️ Affiliate-Hinweis
Die Inhalte dieser Website enthalten Affiliate-Links. Kauft ein Besucher über einen dieser Links ein Produkt oder eine Dienstleistung, erhält die Website vom Verkäufer eine Provision. Der Betrag, den der Käufer zahlt(bei Aktionsrabatten sinkt er ↓), steigt dadurch nicht. Angegebene Preise, Rabatte und Lagerbestände entsprechen dem Stand bei Erstellung und können abweichen; prüfe sie daher vor dem Kauf beim Verkäufer. Produkte werden nach eigenen Kriterien ausgewählt und bewertet, und Provisionen beeinflussen weder die Reihenfolge noch den Inhalt der Bewertungen.