zip-Befehl: Ordner komprimieren, mit unzip entpacken und Komprimierungsoptionen

TestumgebungRHEL-FamilieAlmaLinux 9.8root-KontoGeprüft am 2026-11-05
Befehle zum Komprimieren · ArchivierenzipunzipSpeicherort/usr/bin/zip
Ordner komprimieren und mit unzip entpacken

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

  • ↪️ Dateien und Ordner komprimieren (-r)

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.

site/
css/
style.css
js/
app.js
logs/
access.log
index.html
about.html
.htaccess

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.zip
Archive:  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 files
ls -l site.zip
-rw-r--r-- 1 root root 4158 Oct 28 23:05 site.zip

2️⃣ Optionen des zip-Befehls

  • ↪️ -x, -u, -d, Komprimierungsstufe, -e

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 site
updating: 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 $?
12

Um 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.log

Die 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 site
zip -qr level6.zip site
zip -qr -9 level9.zip site
ls -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
KompressionsstufeGröße der zip-DateiIm Vergleich zur Originalsumme
Summe der Originaldateien35.875 Byte100%
-0 (keine Komprimierung)37.433 Byte104.3%
-6 (Standard)4.179 Byte11.6%
-9 (stärkste Komprimierung)3.874 Byte10.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.txt
Enter 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.zip
Archive:  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 dec
Archive:  secret.zip
[secret.zip] memo.txt password:
 extracting: dec/memo.txt

📌 Wichtige Optionen: Ergebnisse aus diesem Artikel

OptionWas es tutErgebnis in diesem Artikel
zip -rPackt alle Unterordner und Dateien im Ordner einOhne -r eine Zeile adding: site/, mit -r zehn Einträge einschließlich .htaccess
zip -xSchließt Dateien per Muster ausOhne site/logs/* nur acht Einträge, ohne den Ordner logs und access.log
zip -uPackt nur Dateien neu ein, die sich nach dem Erstellen der zip-Datei geändert habenEine Zeile updating: site/index.html (deflated 90%); ohne Änderungen keine Ausgabe und Exit-Code 12
zip -dLöscht Einträge in der zip-Dateideleting: site/logs/ und deleting: site/logs/access.log
zip -qBlendet die Zeilen beim Komprimieren ausAlle drei mit -qr komprimierten Befehle (-0, Standard, -9) enden ohne adding-Zeilen
zip -0Speichert nur, ohne zu komprimierenlevel0.zip mit 37433 Byte größer als die Originalsumme
zip -9Komprimiert so klein wie möglich (Standard -6)level9.zip 3874 Byte, die mit dem Standard erstellte level6.zip 4179 Byte
zip -eFragt nach einem Passwort und verschlüsselt den InhaltFragt Enter password: und Verify password:, dann adding: memo.txt (stored 0%)
unzip -lListet die gespeicherten Einträge auf, ohne zu entpackensite.zip mit 10 files, zusammen 35825 Byte
unzip -dLegt den Zielordner fest und erstellt ihn, wenn es ihn nicht gibtBeginnt mit creating: restore/site/, und die site-Ordnerstruktur wird unter restore entpackt
unzip -oÜberschreibt alle vorhandenen Dateien ohne NachfrageFünf inflating-Zeilen ohne Nachfrage
unzip -nÜberspringt vorhandene Dateien ohne NachfrageNach der Zeile Archive: site.zip erscheint nichts
unzip -tPrüft die komprimierten Daten, ohne zu entpackenOK für jeden Eintrag und No errors detected; die abgeschnittene broken.zip ergibt End-of-central-directory signature not found
unzip -OLegt die Zeichenkodierung der Dateinamen in der zip festMit -O CP949 erscheinen die verstümmelten Namen als 보고서.txt und 견적서.txt (koreanisch für „Bericht“ und „Angebot“)
unzip -pSchickt den entpackten Inhalt an die Standardausgabe, statt Dateien anzulegenNur die zwei Zeilen von .htaccess erscheinen, ohne dass eine Datei entsteht

📎 Weitere Optionen: laut offiziellem Handbuch

OptionWas es tut
zip -mLöscht nach dem Komprimieren die Originaldateien und -ordner (erst wenn die zip-Datei fertig ist; das offizielle Handbuch empfiehlt die Kombination mit -T)
zip -jSpeichert nur Dateinamen, ohne Ordnerpfade
zip -ySpeichert einen symbolischen Link als Link statt der Datei, auf die er zeigt
zip -TPrüft die neue zip-Datei und lässt die ursprüngliche zip-Datei unverändert, wenn die Prüfung fehlschlägt
zip -fErsetzt nur Einträge, die schon in der zip-Datei sind, durch geänderte Dateien und fügt keine neuen hinzu
zip -iPackt nur Dateien ein, die zum angegebenen Muster passen
zip -PSchreibt das Passwort direkt in die Befehlszeile (laut offiziellem Handbuch unsicher)
unzip -jEntpackt nur die Dateien in einen Ordner, ohne die Ordnerstruktur der zip anzulegen
unzip -xLegt Einträge fest, die nicht entpackt werden
unzip -qBlendet die Zeilen beim Entpacken aus
unzip -uEntpackt nur Dateien, die auf der Festplatte fehlen oder neuer sind
unzip -vZeigt in der Liste auch Komprimierungsmethode, komprimierte Größe, Verhältnis und CRC

3️⃣ So verwendest du den unzip-Befehl

  • ↪️ zip unter Linux entpacken mit -d, -o und -n

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 restore
Archive:  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/.htaccess

Gibt 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 restore
Archive:  site.zip
replace restore/site/css/style.css? [y]es, [n]o, [A]ll, [N]one, [r]ename: N

Ohne 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 restore
Archive:  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/.htaccess
unzip -n site.zip -d restore
Archive:  site.zip

Entpackst 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 part
Archive:  site.zip
   creating: part/site/css/
  inflating: part/site/css/style.css

4️⃣ unzip-Fehler

  • ↪️ End-of-central-directory und verstümmelte Dateinamen

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.zip
Archive:  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.zip
Archive:  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.gz
Archive:  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.zip
Archive:  report-win.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
       26  10-28-2026 22:10   ║╕░э╝н.txt
       17  10-28-2026 22:10   ░▀└√╝н.txt
---------                     -------
       43                     2 files

Schreibst 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.zip
Archive:  report-win.zip
  Length      Date    Time    Name
---------  ---------- -----   ----
       26  10-28-2026 22:10   보고서.txt
       17  10-28-2026 22:10   견적서.txt
---------                     -------
       43                     2 files
unzip -O CP949 report-win.zip -d win
Archive:  report-win.zip
  inflating: win/보고서.txt
  inflating: win/견적서.txt

Laut 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.

AusgabeBedeutungAls Nächstes prüfen
End-of-central-directory signature not foundDie Dateiliste am Ende der zip-Datei wurde nicht gefunden – die Datei ist abgeschnitten oder keine zipGröße mit dem Original vergleichen und neu herunterladen · tar.gz mit tar
cannot find or openKeine Datei mit diesem Namen im aktuellen OrdnerDateiname und Ort mit ls
skipping: … incorrect passwordDas Passwort war dreimal falsch, die Datei wurde übersprungen (Exit-Code 82)Groß- und Kleinschreibung des Passworts und Eingabesprache
Dateinamen erscheinen als ZeichensalatNamen in einer Windows-Zeichenkodierung gespeichertDiese 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.

zip-Befehl-SimulatorZip 3.0 · UnZip 6.00
[root@server work]#
Er läuft nur im Browser und komprimiert keine echten Dateien. Die Kompressionsraten sind Messwerte, für im Simulator neu angelegte Dateien sind es Schätzwerte. Mit ↑↓ holst du frühere Befehle zurück.

🔢 FAQ & empfohlene Inhalte

Eine mit gzip komprimierte .gz-Datei endete in unzip mit [End-of-central-directory signature not found]. Mit [gzip -d readme.txt.gz] entpackt, wurde aus readme.txt.gz wieder readme.txt. Eine .tar.gz, bei der mehrere Dateien mit tar gebündelt und dann mit gzip komprimiert wurden, entpackst du in einem Schritt mit tar.

Auf dem geprüften AlmaLinux-9-Server stammten zip und unzip jeweils aus den Paketen zip und unzip. Auf RHEL-basierten Systemen installierst du sie daher mit [sudo dnf install zip unzip], auf Debian-basierten mit [sudo apt install zip unzip] (laut offizieller Debian-Paketliste).

Schreibst du hinter unzip -p die zip-Datei und den Pfad darin, erscheint der Inhalt direkt auf dem Bildschirm. Mit [unzip -p site.zip site/.htaccess] erschienen nur die zwei Zeilen von .htaccess, ohne dass eine Datei entstand.

ℹ️ 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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Beweisen Sie, dass Sie ein Mensch sind: 7   +   3   =