Your Browser is not longer supported

Please use Google Chrome, Mozilla Firefox or Microsoft Edge to view the page correctly
Loading...

{{viewport.spaceProperty.prod}}

zip - Dateien packen und komprimieren (archivieren)

&pagelevel(4)&pagelevel

(package and compress (archive) files)


zip ist ein Programm zum Komprimieren und Packen von Dateien.

Das dazu passende Programm unzip entpackt ZIP-Archive.

Große Archive und Zip64

zip verwendet automatisch die Zip64-Erweiterungen, wenn Dateien, die größer als 4 GB sind, einem Archiv hinzugefügt werden, wenn ein Archiv aktualisiert wird, das Zip64-Einträge enthält (d.h., das resultierende Archiv benötigt Zip64), wenn die Größe des Archivs 4 GB überschreitet oder wenn die Anzahl der Elemente im Archiv ungefähr 64K überschreitet.

Um eine kurze Hilfe für zip und unzip zu erhalten, führen Sie beide aus, ohne Parameter in der Kommandozeile anzugeben.

Verwendung

Das Programm eignet sich für das Packen von Dateien zum Versenden, für die Dateiarchivierung und für die Einsparung von Speicherplatz durch vorübergehendes Komprimieren nicht verwendeter Dateien oder Verzeichnisse.

Das zip-Programm legt eine oder mehrere komprimierte Dateien zusammen mit Informationen zu den Dateien (Name, Pfad, Datum, Uhrzeit der letzten Änderung, Schutzattribute und Prüfsummen zur Verifizierung der Dateiintegrität) in einem einzigen ZIP-Archiv ab. Eine gesamte Verzeichnisstruktur kann mit einem einzigen Kommando in ein ZIP-Archiv verpackt werden. Ein Komprimierungsverhältnis von 2:1 bis 3:1 ist für Textdateien üblich. zip hat ein Komprimierungsverfahren (Deflation) und kann Dateien auch ohne Komprimierung speichern. zip wählt automatisch die bessere der beiden Optionen (Deflation oder Speichern) für jede zu komprimierende Datei aus.

Kommandoformat

Das grundlegende Kommandoformat ist

zip options archive inpath inpath ...

wobei archive ein neues oder vorhandenes ZIP-Archiv ist und inpath ein Verzeichnis oder eine Datei (optional mit Wildcards). Wenn der Name eines vorhandenen ZIP-Archivs angegeben ist, ersetzt zip Elemente im ZIP-Archiv oder fügt neue Elemente hinzu. Wenn z. B. foo.zip vorhanden ist und foo/file1 und foo/file2 enthält und das Verzeichnis foo die Dateien foo/file1 und foo/file3 enthält, gilt Folgendes:

zip -r foo.zip foo

oder kürzer

zip -r foo foo

ersetzt foo/file1 in foo.zip und fügt foo/file3 zu foo.zip hinzu. Danach enthält foo.zip die Dateien foo/file1, foo/file2 und foo/file3, wobei foo/file2 unverändert bleibt.

Wenn also vor der Ausführung des ZIP-Kommandos foo.zip Folgendes enthält:

foo/file1 foo/file2

und das Verzeichnis foo Folgendes enthält:

file1 file3

enthält foo.zip nach der Ausführung Folgendes:

foo/file1 foo/file2 foo/file3

wobei foo/file1 ersetzt wird und foo/file3 neu ist.

-@ Dateilisten

Wenn eine Dateiliste als -@ angegeben ist, liest zip die Liste der Eingabedateien von der Standard-Eingabe und nicht von der Kommandozeile. Beispiel:

zip -@ foo

speichert die Dateien, von denen jeweils eine pro Zeile unter stdin aufgeführt ist, in foo.zip.

Diese Option in Verbindung mit dem Kommando find bietet eine hohe Leistungsfähigkeit. Um zum Beispiel alle C-Quelldateien im aktuellen Verzeichnis und in den zugehörigen Unterverzeichnissen zu archivieren:

find . -name "*.[ch]" -print | zip source -@

(Beachten Sie, dass das Muster in Anführungszeichen gesetzt werden muss, damit es von der Shell nicht ersetzt wird.)

Eingaben und Ausgaben streamen

zip akzeptiert auch einen einfachen Gedankenstrich ("-") als ZIP-Archivnamen, wobei es das ZIP-Archiv in diesem Fall auf die Standard-Ausgabe schreibt, sodass die Ausgabe zu einem anderen Programm weitergeleitet werden kann. Beispiel:

zip -r - . | (ftyp binary ; bs2cp -f - bs2:foo.zip)

würde die zip-Ausgabe direkt in eine BS2000-Datei schreiben.

zip akzeptiert auch einen einfachen Gedankenstrich ("-") als den Namen einer zu komprimierenden Datei, wobei es die Datei in diesem Fall von der Standard-Eingabe liest, sodass zip eine Eingabe von einem anderen Programm erhalten kann. Beispiel:

tar cf - . | zip backup -

würde die Ausgabe des Kommandos tar komprimieren, um das aktuelle Verzeichnis zu sichern. Dies führt gewöhnlich zu einer besseren Komprimierung als beim vorherigen Beispiel mit der Option -r, weil zip die Redundanz zwischen Dateien nutzen kann. Die Sicherung kann mit dem folgenden Kommando wiederhergestellt werden:

unzip -p backup | tar xf -

Wenn kein ZIP-Archivname angegeben wird und stdout kein Terminal ist, fungiert zip als Filter und komprimiert die Standard-Eingabe auf die Standard-Ausgabe. Beispiel:

tar cf - . | zip | (ftyp binary ; bs2cp -f - bs2:foo.zip)

entspricht

tar cf - . | zip - - | (ftyp binary ; bs2cp -f - bs2:foo.zip)

Auf diese Weise erstellte ZIP-Archive können mit dem Programm funzip extrahiert werden. Beispiel:

ftyp binary; bs2cp bs2:foo.zip - | funzip | tar xvf -

Es ist auch möglich, den Datenstrom in einer Datei zu speichern und dann unzip zu verwenden.

Wenn die Ausgabe zu einer anderen Datei geleitet wird, beachten Sie, dass alle Optionen vor der Umleitung enthalten sein sollten, einschließlich -x. Beispiel:

zip archive "*.h" "*.c" -x donotinclude.h orthis.h > tofile

ZIP-Archive

Wenn ein vorhandenes ZIP-Archiv geändert wird, schreibt zip eine temporäre Datei mit dem neuen Inhalt und ersetzt die alte Version erst, wenn der Prozess des Erstellens der neuen Version ohne Fehler abgeschlossen wurde.

Wenn der Name des ZIP-Archivs keine Erweiterung enthält, wird die Erweiterung .zip hinzugefügt. Wenn der Name bereits eine andere Erweiterung als .zip enthält, wird die vorhandene Erweiterung unverändert beibehalten. Bei geteilten Archiven (Archiven, die auf mehrere Dateien aufgeteilt sind) ist jedoch die Erweiterung .zip beim letzten Teilarchiv erforderlich.

Dateien scannen und lesen.

Beim Start von zip sucht das Programm nach zu verarbeitenden Dateien (falls erforderlich). Wenn diese Suche länger als 5 Sekunden dauert, zeigt zip die Meldung "Scanning files" an.

Kommandomodi

zip unterstützt zwei verschiedene Arten von Kommandomodi: externe und interne. Die externen Modi (add, update und freshen) lesen Dateien aus dem Dateisystem (sowie aus einem vorhandenen Archiv), während die internen Modi (delete und copy) ausschließlich auf Elemente in einem vorhandenen Archiv wirken.

add

Vorhandene Elemente aktualisieren und neue Dateien hinzufügen. Wenn das Archiv nicht vorhanden ist, das Archiv erstellen. Dies ist der Standardmodus.

update (-u)

Vorhandene Elemente aktualisieren, wenn sie im Dateisystem neuer sind, und neue Dateien hinzufügen. Wenn das Archiv nicht vorhanden ist, eine Warnung ausgeben und anschließend ein neues Archiv erstellen.

freshen (-f)

Vorhandene Elemente eines Archivs aktualisieren, wenn sie im Dateisystem neuer sind. Fügt dem Archiv keine neuen Dateien hinzu.

delete (-d)

Elemente in einem vorhandenen Archiv auswählen und löschen.

copy (-U)

Elemente in einem vorhandenen Archiv auswählen und in ein neues Archiv kopieren. Dieser neue Modus ist mit "update" vergleichbar, aber die angegebenen Namen wählen Elemente im vorhandenen Archiv, und nicht Dateien aus dem Dateisystem aus. Außerdem verwendet der Modus die Option --out, um das resultierende Archiv in eine neue Datei zu schreiben, anstatt das vorhandene Archiv zu aktualisieren, sodass das ursprüngliche Archiv unverändert bleibt.

Die Option "File Sync" (-FS) ist mit "update" vergleichbar. In diesem Modus wird das Archiv mit den Dateien im Dateisystem synchronisiert. Dateien werden im Archiv nur dann ersetzt, wenn die Zeit oder Größe der Datei im Dateisystem abweicht. Neue Dateien werden hinzugefügt und Elemente werden aus dem Archiv gelöscht, wenn keine übereinstimmende Datei vorhanden ist. In diesem Modus können Elemente aus dem Archiv gelöscht werden. Sie sollten deshalb eine Sicherungskopie des Archivs erstellen.

Siehe auch -DF für das Erstellen von Differenz-Archiven.

Weitere Informationen finden Sie unter den Optionsbeschreibungen weiter unten und im Abschnitt  "Beispiele".

Geteilte Archive

Ab zip-Version 3.0 können Archive geteilt werden.

Ein geteiltes Archiv ist ein ZIP-Standardarchiv, das auf mehrere Dateien aufgeteilt ist. (Beachten Sie, dass geteilte Archive nicht einfach Archive sind, die in verschiedene Teile geteilt sind, denn die Offsets von Elementen basieren jetzt auf dem Anfang des jeweiligen Teilarchivs. Durch die Aneinanderfügung der einzelnen Teile würden diese Offsets ungültig, aber unzip kann normalerweise damit umgehen. zip lehnt normalerweise die Verarbeitung eines solchen verbundenen Archivs ab, sofern nicht die Reparaturoption -FF verwendet wird, um die Offsets zu reparieren.)

Ein Anwendungsfall von geteilten Archiven besteht darin, ein großes Archiv auf mehreren Wechselmedien zu speichern. Bei einem geteilten Archiv mit 20 aufgeteilten Dateien werden die Dateien üblicherweise wie folgt benannt (ersetzen Sie ARCHIVE durch den Namen Ihres Archivs): ARCHIVE.z01, ARCHIVE.z02, ..., ARCHIVE.z19, ARCHIVE.zip. Die letzte Datei ist immer die mit der Endung .zip. Im Gegensatz dazu sind übergreifende Archive die ursprüngliche Methode, Archive auf mehrere Datenträger zu verteilen. Hierbei werden in der Regel Datenträger benötigt, und es werden Volume-Bezeichnungen für die Datenträger verwendet. zip unterstützt geteilte Archive, nicht jedoch übergreifende Archive. Es besteht allerdings ein Verfahren, um geteilte Archive der richtigen Größe in übergreifende Archive umzuwandeln. Dies gilt auch im umgekehrten Fall. Alle Dateien eines übergreifenden Archivs können der Reihe nach in Dateien mit den weiter oben angegebenen Namen kopiert werden, um ein geteiltes Archiv zu erstellen.

Verwenden Sie -s, um die Teilungsgröße festzulegen und ein geteiltes Archiv zu erstellen. Die Größe wird als eine Zahl optional gefolgt von k (kB), m (MB), g (GB) oder t (TB) (der Standard ist m) angegeben. Die Option -sp kann zum Anhalten von zip zwischen Teilungen verwendet werden, um zum Beispiel Wechselmedien zu wechseln. Lesen Sie jedoch weiter unten die Beschreibungen und Warnungen für -s und -sp.

zip aktualisiert zwar keine geteilten Archive, aber zip stellt die Option -O (--output-file oder --out) bereit. Damit können geteilte Archive aktualisiert und in einem neuen Archiv gespeichert werden. Beispiel:

zip inarchive.zip foo.c bar.c --out outarchive.zip

liest das Archiv inarchive.zip, selbst wenn dieses geteilt ist, fügt die Dateien foo.c und bar.c hinzu und schreibt das resultierende Archiv in outarchive.zip. Wenn inarchive.zip geteilt ist, hat outarchive.zip standardmäßig dieselbe Teilungsgröße. Bitte beachten: Wenn outarchive.zip und damit erstellte geteilte Dateien bereits vorhanden sind, werden diese immer wie erforderlich und ohne Warnung überschrieben. Dies kann in der Zukunft geändert werden.

Kommandozeilenformat

Diese Version von zip bietet eine aktualisierte Kommandozeilenverarbeitung und Unterstützung für lange Optionen.

Kurze Optionen haben die Form

-s[-][s[-]...][value][=value][ value]

wobei s eine kurze Option mit einem oder zwei Zeichen ist. Wenn die Option negiert werden kann und "-" unmittelbar auf die Option folgt, ist die Option negiert. Kurze Optionen können auch als separate Argumente angegeben werden:

-s[-][value][=value][ value] -s[-][value][=value][ value] ...

Kurze Optionen enthalten Werte im Allgemeinen entweder als Teil desselben Arguments oder als das folgende Argument. Ein optionales Zeichen "=" wird ebenfalls unterstützt.

Somit können

-ttmmddyyyy

und

-tt=mmddyyyy

und

-tt mmddyyyy

verwendet werden. Die Optionen -x und -i akzeptieren Wertlisten und verwenden ein geringfügig anderes Format als das weiter unten beschriebene. Siehe die Optionen -x und -i.

Lange Optionen haben die Form

--longoption[-][=value][ value]

wobei die Option mit "--" beginnt, einen aus mehreren Zeichen bestehenden Namen hat, einen nachgestellten Bindestrich enthalten kann, um die Option zu negieren (wenn die Option dies unterstützt), und einen Wert (Optionsargument) haben kann, der dadurch angegeben wird, dass ihm das Zeichen "=" (keine Leerzeichen) vorangestellt wird. Werte können auch dem Argument folgen. Somit können

--before-date=mmddyyyy

und

--before-date mmddyyyy

verwendet werden.

Lange Optionsnamen können auf die kürzeste eindeutige Abkürzung gekürzt werden.

Die Optionsbeschreibungen enthalten Informationen zur Unterstützung von langen Optionen.

Um Missverständnisse zu vermeiden, sollten Sie eine negierbare Option mit einem eingebetteten Bindestrich ("-") nicht am Bindestrich abkürzen, wenn Sie die Option negieren möchten (der Parser würde einen nachgestellten Bindestrich, etwa bei der Option "--some-option" mit "--some-" als der Option, als Teil des Namens, und nicht als einen negierenden Bindestrich betrachten). Dies kann in der Zukunft geändert werden, um den letzten Bindestrich bei "--some-" als Negation zu erzwingen.


Syntax


zip [-option ...] [--longoption ...] [-b path] [-ds size] [-n suffixes]
    [-O outputfile] [-P password] [-s splitsize] [-t date] [-tt date]
    [zipfile [file ...]] [-i files] [-x files]

Hinweis:

Die Kommandozeilenverarbeitung in zip wurde geändert, um lange Optionen zu unterstützen und alle Optionen und Argumente konsistenter zu behandeln. Einige alte Kommandozeilen, die von Inkonsistenzen in der Kommandozeile abhängen, funktionieren möglicherweise nicht mehr.


-a
--ascii

Datei in das ASCII-Format umwandeln.

-A
--adjust-sfx

Selbstextrahierendes ausführbares Archiv anpassen. Ein selbstextrahierendes ausführbares Archiv wird erstellt, indem der SFX-Stub einem vorhandenen Archiv vorangestellt wird. Die Option -A weist zip an, die im Archiv gespeicherten Element-Offsets anzupassen, um diese vorangestellten Daten zu berücksichtigen.

-b path
--temp-path path

Angegebenen Pfad für das temporäre ZIP-Archiv verwenden.
Beispiel:

zip -b /tmp stuff *

legt das temporäre ZIP-Archiv im Verzeichnis /tmp ab, und kopiert stuff.zip in das aktuelle Verzeichnis, wenn der Vorgang abgeschlossen ist. Diese Option ist nützlich, wenn ein vorhandenes Archiv aktualisiert wird und das Dateisystem, in dem sich dieses alte Archiv befindet, nicht genügend Speicherplatz hat, um alte und neue Archive gleichzeitig aufzunehmen. Sie kann in einigen Fällen auch beim Streamen nützlich sein, um keine Datenbeschreibungen verwenden zu müssen. Beachten Sie, dass zip bei Verwendung dieser Option zusätzliche Zeit benötigen kann, um die Archivdatei nach Abschluss des Vorgangs in das Zielverzeichnis zu kopieren.

-c

--entry-comments

Einzeilige Kommentare für jede Datei hinzufügen. Dateioperationen (Hinzufügen, Aktualisieren) werden zunächst durchgeführt, und der Benutzer wird dann aufgefordert, einen einzeiligen Kommentar für jede Datei einzugeben. Geben Sie den Kommentar ein und drücken Sie dann die Eingabetaste, oder drücken Sie nur die Eingabetaste, um keinen Kommentar einzugeben.

-d

--delete

Elemente aus einem ZIP-Archiv entfernen (löschen).
Beispiel:

zip -d foo foo/tom/junk foo/harry/\* \*.o

entfernt das Element foo/tom/junk, alle Elemente, die mit foo/harry/ beginnen, und alle Elemente, die auf .o (in jedem beliebigen Pfad) enden. Beachten Sie, dass die Wildcard-Symbole durch Gegenschrägstriche entwertet sind. Dadurch erfolgt die Wildcard-Ersetzung immer anhand des Archivinhalts und nicht etwa anhand der Dateien im aktuellen Verzeichnis. Es können auch Anführungszeichen zum Entwerten verwendet werden. Beispiel:

zip -d foo foo/tom/junk "foo/harry/*" "*.o"

Wenn die Wildcard-Symbole nicht entwertet werden, erfolgt möglicherweise die Ersetzung durch Dateinamen im aktuellen Verzeichnis und diese Dateinamen werden verwendet, um Elemente aus dem Archiv zu löschen.

-db

--display-bytes

Byte-Zähler anzeigen, die angeben, wie viele Bytes verarbeitet wurden und wie viele Bytes noch anstehen.

-dc

--display-counts

Zähler anzeigen, der angibt, wie viele Elemente verarbeitet wurden und wie viele Elemente noch anstehen.

-du

--display-usize

Nicht komprimierte Größe jedes Elements anzeigen.

-dv

--display-volume

Nummer des Datenträgers anzeigen, von dem ein Element gelesen bzw. auf den es geschrieben wird.

-D

--no-dir-entries

Keine Elemente für Verzeichnisse im ZIP-Archiv erstellen.
Verzeichniseinträge werden standardmäßig erstellt, sodass ihre Attribute im ZIP-Archiv gespeichert werden können.
Die Option -D entspricht der Angabe -x "*/".

-DF

--difference-archive

Archiv erstellen, das alle neuen und geänderten Dateien enthält, seit das ursprüngliche Archiv erstellt wurde. Dies funktioniert jedoch nur, wenn die Eingabedateiliste und das aktuelle Verzeichnis dieselben sind wie beim ursprünglichen zip-Vorgang.
Wenn z. B. das vorhandene Archiv unter Verwendung von

zip -r foofull .

in einem Verzeichnis erstellt wurde, erzeugt das im selben Verzeichnis ausgeführte Kommando

zip -r foofull . -DF --out foonew

das Archiv foonew mit nur den Dateien, die nicht in foofull enthalten sind, und den Dateien, deren Größe oder Änderungszeit nicht mit denen in foofull übereinstimmt. Beachten Sie, dass die Zeitzonenumgebungsvariable TZ entsprechend der lokalen Zeitzone festgelegt werden muss, damit diese Option ordnungsgemäß funktioniert. Eine Änderung der Zeitzone seit der Erstellung des ursprünglichen Archivs kann dazu führen, dass keine Zeiten übereinstimmen und alle Dateien aufgenommen werden.
Ein möglicher Ansatz zur Sicherung eines Verzeichnisses kann darin bestehen, ein normales Archiv des Inhalts des Verzeichnisses als vollständige Sicherung zu erstellen und diese Option dann zu verwenden, um inkrementelle Sicherungen zu erstellen.

-e

--encrypt

Inhalt des ZIP-Archivs mit einem Kennwort verschlüsseln, das am Terminal eingegeben und bestätigt werden muss. Falls die Standard-Fehlerausgabe kein Terminal ist, wird zip mit einem Fehler beendet.

-f

--freshen

Existierende Datei im ZIP-Archiv nur dann ersetzen, wenn sie eine neuere Änderungszeit hat als die bereits im ZIP-Archiv existierende Version. Im Gegensatz zur Aktualisierungsoption (-u) werden hierdurch keine Dateien hinzugefügt, die nicht bereits im ZIP-Archiv enthalten sind.
Beispiel:

zip -f foo

Dieses Kommando muss im selbenVerzeichnis ausgeführt werden, in dem das ursprüngliche zip-Kommando ausgeführt wurde, weil in ZIP-Archiven gespeicherte Pfade immer relativ sind. Beachten Sie, dass die Zeitzonenumgebungsvariable TZ entsprechend der lokalen Zeitzone festgelegt werden muss, damit die Optionen -f, -u und -o ordnungsgemäß funktionieren.

-F

--fix

-FF

--fixfix

ZIP-Archiv reparieren. Die Option -F kann verwendet werden, wenn einige Teile des Archivs fehlen. Es ist jedoch ein angemessen intaktes zentrales Verzeichnis erforderlich. Das Eingabearchiv wird wie gewohnt durchsucht, aber zip ignoriert einige Probleme. Das resultierende Archiv sollte gültig sein, aber alle inkonsistenten Elemente werden weggelassen.

Bei einer Verdoppelung wie in -FF wird das Archiv vom Anfang an durchsucht und zip sucht nach speziellen Signaturen, um die Grenzen zwischen den Archivelementen zu erkennen. Das einfache -F ist zuverlässiger, wenn das Archiv nicht zu stark beschädigt ist. Versuchen Sie es also zunächst mit dieser Option. Wenn das Archiv zu stark beschädigt ist oder das Ende abgeschnitten wurde, müssen Sie -FF verwenden.

Mit keiner der Optionen können Archive wiederhergestellt werden, die fälschlicherweise im ASCII-Modus statt im Binärmodus übertragen wurden. Nach der Reparatur kann die Option -t von unzip anzeigen, dass einige Dateien eine ungültige CRC-Prüfsumme haben.

Diese Dateien können nicht wiederhergestellt werden. Sie können sie mit der Option -d von zip aus dem Archiv entfernen.

Beachten Sie, dass -FF möglicherweise Probleme hat, Archive zu reparieren, die ein eingebettetes ZIP-Archiv enthalten, das (ohne Komprimierung) in dem Archiv gespeichert wurde, und je nach Beschädigung kann es die Elemente in dem eingebetteten Archiv eher finden als das Archiv selbst.

Versuchen Sie es zunächst mit -F, weil dieses Problem hierbei nicht besteht.

Um zum Beispiel das beschädigte Archiv foo.zip zu reparieren, versucht

zip -F foo --out foofix

die Elemente normal zu lesen, und kopiert gültige Elemente in das neue Archiv
foofix.zip. Falls dies nicht funktioniert, zum Beispiel wenn das Archiv abgeschnitten wurde oder wenn Elemente fehlen, von denen Sie wissen, dass sie im Archiv enthalten sind, versuchen Sie es mit

zip -FF foo --out foofixfix

und vergleichen Sie das resultierende Archiv mit dem von -F erstellten Archiv.

Die Option -FF kann ein inkonsistentes Archiv erstellen. Je nachdem, was beschädigt ist, können Sie dann die Option -F verwenden, um dieses Archiv zu reparieren.

Ein geteiltes Archiv mit fehlenden Teilarchiven kann mit -F repariert werden, wenn das letzte Teilarchiv (mit der Endung .zip) existiert. Wenn diese Datei fehlt, müssen Sie das Archiv mit -FF reparieren. Dabei werden Sie aufgefordert, die vorhandenen Teilarchive bereitzustellen.

Mit den Reparaturoptionen können derzeit keine Elemente wiederhergestellt werden, die eine ungültige Prüfsumme haben oder anderweitig beschädigt sind.

-FI

--fifo

Normalerweise überspringt zip das Lesen von FIFO-Dateien (named pipes), weil zip hängen bleiben kann, wenn die FIFO-Datei nicht mit Daten versorgt ist. Diese Option weist zip an, den Inhalt jeder gefundenen FIFO-Datei zu lesen.

-FS

--filesync

Inhalt eines Archivs mit den Dateien im Dateisystem synchronisieren.

Wenn ein Archiv aktualisiert wird, werden normalerweise neue Dateien hinzugefügt und geänderte Dateien werden aktualisiert, aber Dateien, die im Dateisystem nicht mehr vorhanden sind, werden nicht aus dem Archiv gelöscht. Diese Option unterstützt einen Modus, bei dem Elemente im Archiv anhand des Dateisystems überprüft werden. Wenn die Änderungszeit und Dateigröße des Elements mit denen der Datei im Dateisystem übereinstimmen, wird das Element aus dem alten Archiv kopiert, und nicht aus dem Dateisystem gelesen und komprimiert. Wenn die Datei im Dateisystem geändert wurde, wird das Element wie gewohnt gelesen und komprimiert. Wenn das Element im Archiv nicht mit einer Datei im Dateisystem übereinstimmt, wird es gelöscht. Mit dieser Option wird ein Archiv erzeugt, das einem neu erstellten Archiv entspricht, aber weil vorhandene Elemente kopiert und nicht komprimiert werden, kann das Aktualisieren eines vorhandenen Archivs mit -FS deutlich schneller als das Erstellen eines neuen Archivs sein. Sie können auch -u verwenden, um ein Archiv zu aktualisieren.

Damit diese Option funktioniert, muss das Archiv im selben Verzeichnis aktualisiert werden, in dem es erstellt wurde. Auf diese Weise stimmen die relativen Pfade überein.

Wenn wenige Dateien aus dem alten Archiv kopiert werden, kann es schneller sein, stattdessen ein neues Archiv zu erstellen.

Beachten Sie, dass die Zeitzonenumgebungsvariable TZ entsprechend der lokalen Zeitzone festgelegt werden muss, damit diese Option ordnungsgemäß funktioniert. Eine Änderung der Zeitzone seit der Erstellung des ursprünglichen Archivs kann dazu führen, dass keine Zeiten übereinstimmen und alle Dateien erneut komprimiert werden.

Diese Option löscht Dateien aus dem Archiv. Wenn Sie das ursprüngliche Archiv beibehalten möchten, erstellen Sie zunächst eine Kopie des Archivs oder verwenden Sie die Option --out, um das aktualisierte Archiv in eine neue Datei auszugeben. Das Erstellen eines neuen Archivs mit einem neuen Archivnamen ist zwar möglicherweise langsamer, aber es ist sicherer, vermeidet Konflikte zwischen Archiv- und Dateisystempfaden und stellt die bevorzugte Vorgehensweise dar.

-g

--grow

An das angegebene ZIP-Archiv anfügen, anstatt ein neues Archiv zu erstellen. Wenn dieser Vorgang fehlschlägt, versucht zip, das Archiv in seinem ursprünglichen Zustand wiederherzustellen. Wenn die Wiederherstellung fehlschlägt, kann das Archiv beschädigt werden. Diese Option wird ignoriert, wenn kein vorhandenes Archiv besteht oder wenn mindestens ein Archivelement aktualisiert oder gelöscht werden muss.

-h
-?

--help

zip-Hilfeinformationen anzeigen (dies wird auch angezeigt, wenn zip ohne Argumente ausgeführt wird).

-h2

--more-help

Erweiterte Hilfe anzeigen, unter anderem mehr über Kommandozeilenformat, Wildcard-Ersetzung und weitere Optionen.

-i files
--include files

Nur die angegebenen Dateien aufnehmen. Beispiel:

zip -r foo . -i \*.c

Dadurch werden nur die Dateien aufgenommen, die im aktuellen Verzeichnis und in den zugehörigen Unterverzeichnissen auf .c enden.

Verwenden Sie also zur Aufnahme von dir ein Verzeichnis direkt unter dem aktuellen Verzeichnis

zip -r foo . -i dir/\*

oder

zip -r foo . -i "dir/*"

um Pfade wie dir/a und dir/b/file.c auszuwählen.

Beachten Sie, dass derzeit ein nachgestelltes Zeichen "/" für Verzeichnisse erforderlich ist, zum Beispiel in

zip -r foo . -i dir/

um das Verzeichnis dir aufzunehmen.

Die lange Optionsform des ersten Beispiels ist

zip -r foo . --include \*.c

und bewirkt dasselbe wie die kurze Optionsform. Die Dateiliste endet beim nächsten Argument, das mit "-" beginnt, am Ende der Kommandozeile oder beim Listenabschlusszeichen "@" (ein Argument, das einfach "@" ist). Das Vorstehende kann also zum Beispiel wie folgt

zip -i \*.c @ -r foo .

angegeben werden. Es muss ein Leerzeichen zwischen der Option und der ersten Datei einer Liste vorhanden sein. Für nur eine Datei können Sie die Form mit einem einzelnen Wert verwenden

zip -i\*.c -r foo .

(kein Leerzeichen zwischen Option und Wert) oder

zip --include=\*.c -r foo .

als weitere Beispiele.

Verwenden Sie -sc, um zu sehen, wie Ihre Kommandozeile analysiert wird.

Auch möglich:

zip -r foo . -i@include.lst

Dadurch werden nur die Dateien im aktuellen Verzeichnis und in den zugehörigen Unterverzeichnissen aufgenommen, die mit Mustern in der Datei include.lst übereinstimmen.

-j

--junk-paths

Nur den Namen einer gespeicherten Datei speichern (Pfad entfernen) und keine Verzeichnisnamen speichern. Standardmäßig speichert zip den vollständigen Pfad (relativ zum aktuellen Verzeichnis).

-J

--junk-sfx

Alle vorangestellten Daten (z. B. ein SFX-Stub) aus dem Archiv entfernen.

-k

--DOS-names

Versuchen, die Namen und Pfade MSDOS-konform umzuwandeln. Nur das MSDOS-Attribut (Benutzerschreibrecht) wird gespeichert, und das Element wird als unter MSDOS erzeugt gekennzeichnet (auch wenn dies nicht der Fall ist); für die Kompatibilität mit PKUNZIP unter MSDOS, das bestimmte Namen wie solche mit zwei Punkten nicht verarbeiten kann.

-l

--to-crlf

Unix-Zeilenende "LF" in MSDOS-Zeilenende "CR LF" umwandeln. Diese Option sollte nicht bei Binärdateien verwendet werden. Diese Option kann verwendet werden, wenn das ZIP-Archiv für PKUNZIP unter MSDOS vorgesehen ist. Wenn die Eingabedateien bereits "CR LF" enthalten, fügt diese Option ein zusätzliches "CR" hinzu. Hierdurch wird sichergestellt, dass unzip -a unter Unix eine genaue Kopie der ursprünglichen Datei zurückerhält, um die Wirkung von zip -l rückgängig zu machen. Siehe -ll, um weitere Informationen über den Umgang mit Binärdateien zu erhalten.

-la

--log-append

An vorhandene Protokolldatei anfügen. Die Standardeinstellung ist Überschreiben.

-lf logfilepath
--logfile-path logfilepath

Protokolldatei in das angegebene Verzeichnis schreiben. Als Standardeinstellung wird eine vorhandene Datei an diesem Speicherort überschrieben, aber die Option -la führt dazu, dass eine vorhandene Datei geöffnet wird und die neuen Protokollinformationen an vorhandene Informationen angefügt werden. Nur Warnungen und Fehler werden in das Protokoll geschrieben, es sei denn, die Option -li ist ebenfalls angegeben. In diesem Fall werden auch alle Informationsmeldungen in das Protokoll geschrieben.

-li

--log-info

Informationsmeldungen wie Namen von gezippten Dateien in das Protokoll aufnehmen. Als Standardeinstellung werden nur die Kommandozeile, Warnungen und Fehler und der endgültige Status aufgenommen.

-ll

--from-crlf

MSDOS-Zeilenende "CR LF" in Unix-Zeilenende "LF" umwandeln. Diese Option sollte nicht bei Binärdateien verwendet werden. Wenn die Datei umgewandelt wird und später festgestellt wird, dass die Datei binär ist, wird eine Warnung ausgegeben und die Datei ist wahrscheinlich beschädigt. Wenn -ll Binärdaten im ersten Puffer erkennt, der aus einer Datei gelesen wird, gibt zip eine Warnung aus und überspringt die Umwandlung der Datei.

-L

--license

zip-Lizenz anzeigen.

-m

--move

Angegebene Dateien in das ZIP-Archiv verschieben. Hierdurch werden die Dateien/Verzeichnisse gelöscht, nachdem das angegebene ZIP-Archiv erstellt wurde. Wenn ein Verzeichnis nach dem Entfernen der Dateien leer ist, wird auch das Verzeichnis entfernt. Löschungen erfolgen erst, nachdem zip das Archiv ohne Fehler erstellt hat. Dies ist nützlich, um Speicherplatz zu sparen, aber es ist möglicherweise gefährlich. Diese Option sollte deshalb in Kombination mit -T verwendet werden, um das Archiv zu testen, bevor alle Eingabedateien entfernt werden.

-MM

--must-match

Alle Eingabemuster müssen mindestens mit einer Datei übereinstimmen, und alle gefundenen Eingabedateien müssen lesbar sein. Wenn ein Eingabemuster nicht mit einer Datei übereinstimmt, wird normalerweise die Warnung "name not matched" ausgegeben, und wenn eine Eingabedatei gefunden wurde, aber später fehlt oder nicht lesbar ist, wird eine Warnung in Bezug auf eine fehlende oder nicht lesbare Datei ausgegeben. In beiden Fällen setzt zip das Erstellen des Archivs fort, wobei fehlende oder nicht les-

bare Dateien übersprungen werden und bereits im Archiv vorhandene Dateien unverändert bleiben. Wenn das Archiv erstellt wurde und dabei Dateien nicht lesbar waren, gibt zip den OPEN-Fehlercode (18) anstelle der normalen Erfolgsrückgabe (0) zurück. Wenn -MM festgelegt ist, wird zip beendet, sobald ein Eingabemuster nicht übereinstimmt (immer wenn die Warnung "name not matched" ausgegeben wird) oder wenn eine Eingabedatei nicht lesbar ist. In beiden Fällen wird zip mit einem OPEN-Fehler beendet und es wird kein Archiv erstellt. Diese Option ist nützlich, wenn eine bekannte Dateiliste gezippt wird. Fehlende oder unlesbare Dateien führen dadurch zu einem Fehler. Sie ist weniger nützlich, wenn sie mit Wildcards verwendet wird. zip wird aber auch hier mit einem Fehler beendet, wenn ein Eingabemuster nicht mindestens mit einer Datei übereinstimmt und wenn übereinstimmende Dateien nicht lesbar sind. Wenn Sie das Archiv trotzdem erstellen und nur wissen möchten, ob Dateien übersprungen wurden, verwenden Sie nicht -MM und überprüfen Sie nur den Rückgabecode. Auch -lf kann nützlich sein.

-n suffixes
--suffixes suffixes

Nicht versuchen, Dateien mit den angegebenen Suffixen zu komprimieren. Diese Dateien werden einfach in der Zip-Ausgabedatei gespeichert (0 % Komprimierung), sodass zip keine Zeit damit verschwendet, die Dateien zu komprimieren. Die Suffixe werden entweder durch Doppelpunkte oder Semikola getrennt. Beispiel:

zip -rn .Z:.zip:.tiff:.gif:.snd foo foo

kopiert alles aus foo in foo.zip, aber speichert alle Dateien, die auf .Z, .zip, .tiff, .gif oder .snd enden, ohne diese zu komprimieren (für Bild- und Tondateien werden häufig spezielle Komprimierungsverfahren verwendet). Als Standardeinstellung komprimiert zip keine Dateien mit Erweiterungen in der Liste .Z:.zip:.zoo:.arc:.lzh:.arj. Diese Dateien werden direkt im Ausgabearchiv gespeichert. Die Umgebungsvariable ZIPOPT kann verwendet werden, um die Standardoptionen zu ändern.

Um zu versuchen, alle Dateien zu komprimieren, verwenden Sie:

zip -n : foo

Bei der Option für eine maximale Komprimierung -9 wird ebenfalls versucht, alle Dateien unabhängig von ihrer Erweiterung zu komprimieren.

-nw

--no-wild

Keine interne Wildcard-Verarbeitung durchführen (eine Shell-Verarbeitung von Wildcards wird weiterhin von der Shell durchgeführt, sofern nicht die Argumente entwertet werden). Dies ist nützlich, wenn eine Pfadliste gelesen wird und keine Wildcard-Ersetzung gewünscht ist.

-o

--latest-time

Änderungszeit des ZIP-Archivs auf die letzte (späteste) Änderungszeit festlegen, die unter den Elementen im ZIP-Archiv gefunden wurde. Dies kann gegebenenfalls ohne andere Vorgänge verwendet werden. Beispiel:

zip -o foo

ändert die Änderungszeit von foo.zip auf die letzte Änderungszeit der Elemente in
foo.zip.

-O output-file
--output-file output-file

Archivänderungen wie gewohnt verarbeiten, aber das vorhandene Archiv nicht aktualisieren, sondern das neue Archiv in die Ausgabedatei ausgeben. Dies ist nützlich, um ein Archiv zu aktualisieren, ohne das vorhandene Archiv zu ändern, wobei das Eingabearchiv eine andere Datei als das Ausgabearchiv sein muss.

Diese Option kann verwendet werden, um aktualisierte geteilte Archive zu erstellen. Sie kann auch zusammen mit -U verwendet werden, um Einträge aus einem vorhandenen Archiv in ein neues Archiv zu kopieren (siehe Abschnitt "Beispiele" ). Eine weitere Verwendung besteht darin, ZIP-Archive von einer Teilungsgröße in eine andere umzuwandeln. Um zum Beispiel ein Archiv mit 700-MB-CD-Teilungen in ein Archiv mit 2-GB-DVD-Teilungen umzuwandeln, können Sie Folgendes verwenden:

zip -s 2g cd-split.zip --out dvd-split.zip

Hierbei wird der Kopiermodus verwendet. Siehe -U weiter unten, um weitere Informationen zu erhalten. Außerdem:

zip -s 0 split.zip --out unsplit.zip

wandelt ein geteiltes Archiv in ein Archiv um, das aus einer einzelnen Datei besteht. Bei Archiven mit verschlüsselten Elementen entschlüsselt zipcloak die Elemente und wandelt sie in normale Elemente um.

-p

--paths

Relative Dateipfade als Teil der Namen von im Archiv gespeicherten Dateien aufnehmen. Dies ist die Standardeinstellung. Die Option -j entfernt die Pfade und speichert nur die Namen der Dateien.

-P password
--password password

Kennwort verwenden, um Elemente im ZIP-Archiv zu verschlüsseln. DIES IST NICHT SICHER! Verwenden Sie in Fällen, in denen Sicherheit wirklich wichtig ist, eine starke Verschlüsselung anstelle der relativ schwachen Standardverschlüsselung, die vom zip-Programm bereitgestellt wird.

-q

--quiet

Stiller Modus; Informationsmeldungen und Aufforderungen zur Kommentareingabe entfernen. (Dies ist zum Beispiel in Shell-Skripten und bei Hintergrundaufgaben nützlich.)

-r

--recurse-paths

Verzeichnisstruktur rekursiv durchlaufen. Beispiel:

zip -r foo.zip foo

oder kürzer

zip -r foo foo

In diesem Fall werden alle Dateien und Verzeichnisse in foo in dem ZIP-Archiv foo.zip gespeichert. Hierzu zählen auch Dateien, deren Namen mit "." beginnen, weil die Rekursion nicht den Shell-Mechanismus zur Dateinamenersetzung verwendet. Wenn Sie nur eine bestimmte Teilmenge der Dateien in das Verzeichnis foo und in dessen Unterverzeichnisse aufnehmen möchten, verwenden Sie die Option -i, um das Muster der aufzunehmenden Dateien anzugeben.

Verwenden Sie nicht -r mit dem Namen ".*", weil dies ".." einschließt und in diesem Fall versucht wird, das übergeordnete Verzeichnis zu zippen (dies ist wahrscheinlich nicht, was beabsichtigt wurde).

Es sind mehrere Quellverzeichnisse zulässig. Beispiel:

zip -r foo foo1 foo2

Dabei wird zunächst foo1 und dann foo2 gezippt, wobei jedes Verzeichnis rekursiv durchlaufen wird.

-R

--recurse-patterns

Verzeichnisstruktur rekursiv durchlaufen, beginnend ab dem aktuellen Verzeichnis. Beispiel:

zip -R foo "*.c"

In diesem Fall werden alle Dateien, die beginnend ab dem aktuellen Verzeichnis mit *.c im Verzeichnisbaum übereinstimmen, in dem ZIP-Archiv foo.zip gespeichert. Beachten Sie, dass *.c mit file.c, a/file.c und a/b/.c übereinstimmt. Mehrere Muster können als separate Argumente angegeben werden.

-s splitsize
--split-size splitsize

Geteiltes Archiv erstellen und Teilungsgröße festlegen. Ein geteiltes Archiv ist ein Archiv, das auf viele Dateien aufgeteilt sein kann. Wenn bei der Archiverstellung die Archivgröße die angegebene Teilungsgröße erreicht, wird dieses Teilarchiv geschlossen und das nächste Teilarchiv wird geöffnet. Generell haben alle Teilarchive, außer dem letzten, die Teilungsgröße, und das letzte Teilarchiv hat die Größe der verbliebenen Daten. Wenn das gesamte Archiv kleiner als die Teilungsgröße ist, wird ein Archiv mit einer einzigen Datei erstellt.

Geteilte Archive werden in nummerierten Dateien gespeichert. Wenn z. B. das Ausgabearchiv als archive bezeichnet wird und drei Teilarchive erforderlich sind, besteht das resultierende Archiv in den drei Dateien archive.z01, archive.z02 und archive.zip. Nehmen Sie keine Änderungen an der Nummerierung dieser Dateien vor. Das Archiv kann andernfalls nicht gelesen werden, weil die Nummerierung verwendet wird, um die Reihenfolge zu bestimmen, in der die Teilarchive gelesen werden. Die Teilungsgröße ist eine Zahl, auf die optional ein Multiplikator folgt. Die Zahl muss eine Ganzzahl sein. Der Multiplikator kann k (Kilobyte), m (Megabyte), g (Gigabyte) oder t (Terabyte) sein. Da 64k die Mindestteilungsgröße ist, wird für Zahlen ohne Multiplikator standardmäßig Megabyte verwendet.

Geteilte Archive können nicht aktualisiert werden. Sehen Sie sich jedoch die Informationen zu der Option -O (--out) an, um zu erfahren, wie ein geteiltes Archiv aktualisiert werden kann, wenn es in ein neues Archiv kopiert wird. Ein geteiltes Archiv kann auch in ein Archiv mit einer einzigen Datei umgewandelt werden, indem eine Teilungsgröße von 0 verwendet oder die Option -s negiert wird:

zip -s 0 split.zip --out single.zip

Siehe auch -U (--copy), um weitere Informationen zur Verwendung des Kopiermodus zu erhalten.

-sc

--show-command

Kommando anzeigen, das ausgeführt werden würde, ohne es tatsächlich auszuführen. Der Kommando-Parser stellt die Argumente um, sodass alle Optionen und alle damit verbundenen Werte vor Argumenten stehen, die keine Optionen darstellen. Dadurch kann eine Option an jeder Stelle in der Kommandozeile angezeigt werden, sofern alle mit der Option verbundenen Werte direkt angeschlossen sind. Diese Option zeigt die Kommandozeile so an, wie sie von zip gesehen wird. Hierzu gehören auch alle Argumente aus der Umgebung wie die von der ZIPOPT-Variable. Wo dies zulässig ist, können Optionen, die später in der Kommandozeile vorkommen, Optionen unwirksam machen, die früher in der Kommandozeile vorkommen.

-sf

--show-files

Dateien anzeigen, die verarbeitet werden würden, dann beenden. Wenn zum Beispiel ein neues Archiv erstellt wird, werden hierdurch die Dateien aufgelistet, die hinzugefügt werden würden. Wenn die Option negiert ist (-sf-), erfolgt die Ausgabe nur in eine geöffnete Protokolldatei. Eine Bildschirmanzeige wird für große Listen nicht empfohlen.

-so

--show-options

Alle von zip unterstützten verfügbaren Optionen anzeigen, wie sie auf dem aktuellen System kompiliert sind. Da dieses Kommando die Optionstabelle liest, sollten alle Optionen enthalten sein. Jede Zeile enthält die kurze Option (falls definiert), die lange Option (falls definiert), das Format jedes Arguments, das zu der Option gehört, die Angabe, ob die Option negiert werden kann, und eine kurze Beschreibung. Das Argumentformat kann sein: kein Argument, erforderliches Argument, optionales Argument, Argument aus einem einzelnen Zeichen oder Argumentliste. Die Ausgabe soll nicht anzeigen, wie eine Option verwendet wird, sondern nur, welche Optionen verfügbar sind.

-sp

--split-pause

Wenn das Teilen mit -s aktiviert ist, Teilungspausenmodus aktivieren. Hierdurch werden geteilte Archive wie bei -s erstellt, aber es wird kontinuierlich geschrieben, sodass jedes Teilarchiv geschlossen werden kann, nachdem es geschrieben wurde, und zip hält den Vorgang nach jedem Teilarchiv an, sodass z.B. Medien gewechselt werden können.

Dieser Teilungsmodus unterstützt zwar das direkte Schreiben auf Wechselmedien, aber er verwendet ein Stream-Archiv-Format, das von einigen unzips möglicherweise nicht gelesen werden kann. Bevor Sie sich auf Teilarchive verlassen, die mit -sp erstellt wurden, testen Sie ein geteiltes Archiv mit dem unzip, den Sie verwenden werden. Um ein geteiltes Stream-Archiv (mit -sp erstellt) in ein Standardarchiv umzuwandeln, siehe die Option --out.

-sv

--split-verbose

Verschiedene ausführliche Meldungen beim Teilungsvorgang aktivieren, die anzeigen, wie die Teilungen durchgeführt werden.

-t mmddyyyy
--from-date mmddyyyy

Nicht auf Dateien anwenden, die vor dem angegebenen Datum geändert wurden, wobei mm der Monat (01 bis 12), dd der Tag des Monats (01 bis 31), und yyyy das Jahr ist. Das Datumsformat yyyy-mm-dd nach ISO 8601 ist ebenfalls zulässig. Beispiel:

zip -rt 12071991 infamy foo

zip -rt 1991-12-07 infamy foo

fügt alle Dateien in foo und dessen Unterverzeichnissen, die zuletzt am oder nach dem 7. Dezember 1991 geändert wurden, dem ZIP-Archiv infamy.zip hinzu.

-tt mmddyyyy
--before-date mmddyyyy

Nicht auf Dateien anwenden, die am oder nach dem angegebenen Datum geändert wurden, wobei mm der Monat (01 bis 12), dd der Tag des Monats (01 bis 31), und yyyy das Jahr ist. Das Datumsformat yyyy-mm-dd nach ISO 8601 ist ebenfalls zulässig. Beispiel:

zip -rtt 11301995 infamy foo

zip -rtt 1995-11-30 infamy foo

fügt alle Dateien in foo und dessen Unterverzeichnissen, die zuletzt vor dem 30. November 1995 geändert wurden, dem ZIP-Archiv infamy.zip hinzu.

-T

--test

Integrität des neuen ZIP-Archivs testen. Wenn die Überprüfung fehlschlägt, bleibt das alte ZIP-Archiv unverändert und es werden keine Eingabedateien entfernt (mit der Option -m).

-TT cmd
--unzip-command cmd

Kommando cmd anstelle von "unzip -tqq" verwenden, um ein Archiv zu testen, wenn die Option -T verwendet wird. Um statt des Standard-unzip eine Kopie von unzip im aktuellen Verzeichnis zu verwenden, kann Folgendes angegeben werden:

zip archive file1 file2 -T -TT "./unzip -tqq"

In cmd wird {} durch den Namen des temporären Archivs ersetzt. Andernfalls wird der Name des Archivs an das Ende des Kommandos angefügt. Der Rückgabecode wird auf Erfolg überprüft.

-u

--update

Vorhandene Elemente im ZIP-Archiv nur ersetzen (aktualisieren), wenn eine Änderung aktueller ist als die bereits im ZIP-Archiv verwendete Version. Beispiel:

zip -u stuff *

fügt neue Dateien im aktuellen Verzeichnis hinzu und aktualisiert alle Dateien, die seit der letzten Erstellung/Änderung des ZIP-Archivs stuff.zip geändert wurden (beachten Sie, dass zip hierbei nicht versucht, stuff.zip in sich selbst zu packen).

Beachten Sie, dass die Option -u ohne Eingabedateiargumente wie die Option -f (freshen) wirkt.

-U

--copy-entries

Elemente aus einem Archiv in ein anderes kopieren. Hierfür muss die Option --output-file eine andere Ausgabedatei als das Eingabearchiv festlegen. Der Kopiermodus ist der umgekehrte Fall von -d (Löschen). Beim Löschen mit --output-file werden die ausgewählten Elemente aus dem Archiv gelöscht und alle anderen Elemente werden in das neue Archiv kopiert, während beim Kopiermodus die Dateien ausgewählt werden, die in das neue Archiv aufgenommen werden sollen. Anders als bei -u (Aktualisieren) werden Eingabemuster in der Kommandozeile nur mit Archiveinträgen, und nicht mit den Dateisystemdateien auf Übereinstimmung geprüft. Beispiel:

zip inarchive "*.c" --copy --out outarchive

kopiert Elemente, deren Namen auf .c enden, aus inarchive in outarchive.

Wenn keine Eingabedateien in der Kommandozeile angegeben werden und --out verwendet wird, wird der Kopiermodus angenommen:

zip inarchive --out outarchive

Dies ist nützlich, um zum Beispiel die Teilungsgröße zu ändern. Das Ver- und Entschlüsseln von Elementen wird beim Kopiermodus noch nicht unterstützt.

Verwenden Sie hierfür zipcloak.

-v

--verbose

Ausführlicher Modus oder diagnostische Versionsinformationen ausgeben.

Bei einer Anwendung auf tatsächliche Vorgänge aktiviert diese Option normalerweise die Anzeige einer Fortschrittsanzeige während der Komprimierung (und fordert ausführliche Diagnoseinformationen über Besonderheiten bei der Struktur des ZIP-Archivs an.

Wenn jedoch -v das einzige Kommandozeilenargument ist, werden stattdessen Versionsinformationen auf die Standard-Ausgabe ausgegeben.

-ws

--wild-stop-dirs

Wildcards nur auf einer Verzeichnisebene auf Übereinstimmung prüfen. Normalerweise behandelt zip Pfade als Zeichenfolgen, und bei den Pfaden

/foo/bar/dir/file1.c

/foo/bar/file2.c

würde ein Eingabemuster wie

/foo/bar/*

normalerweise zu beiden Pfaden passen, wobei * mit dir/file1.c und file2.c übereinstimmt. Beachten Sie, dass im ersten Fall eine Verzeichnisbegrenzung (/) beim Mustervergleich überschritten wurde. Mit -ws werden keine Verzeichnisbegrenzungen in den Mustervergleich aufgenommen, wodurch Wildcards lokal für eine bestimmte Verzeichnisebene werden. Wenn also -ws aktiviert ist, entspricht nur der zweite Pfad dem Muster. Verwenden Sie "**" zusammen mit -ws, um einen Mustervergleich über Verzeichnisbegrenzungen hinweg durchzuführen.

-x files
--exclude files

Die angegebenen Dateien explizit ausschließen. Beispiel:

zip -r foo foo -x \*.o

Dies nimmt den Inhalt von foo in foo.zip auf und schließt alle Dateien aus, die auf .o enden. Der Gegenschrägstrich verhindert die Dateinamenersetzung durch die Shell, sodass die Überprüfung der Namen auf Übereinstimmung von zip auf allen Verzeichnisebenen durchgeführt wird.

Auch möglich:

zip -r foo foo -x@exclude.lst

Dies schließt den Inhalt von foo in foo.zip ein und schließt alle Dateien aus, die den Mustern in der Datei exclude.lst entsprechen.

Die langen Optionsformen des Vorstehenden sind

zip -r foo foo --exclude \*.o

und

zip -r foo foo --exclude @exclude.lst

Es können mehrere Muster angegeben werden. Beispiel:

zip -r foo foo -x \*.o \*.c

Wenn sich kein Leerzeichen zwischen -x und den Mustern befindet, wird nur ein Wert angenommen (keine Liste):

zip -r foo foo -x\*.o

Siehe -i, um weitere Informationen zum Einschließen und Ausschließen zu erhalten.

-X

--no-extra

Zusätzliche Dateiattribute (Benutzernummer, Gruppennummer und Änderungszeit) nicht speichern. Beim zip-Format werden zusätzliche Felder verwendet, um zusätzliche Informationen für jedes Element einzuschließen. Einige zusätzliche Felder sind spezifisch für bestimmte Systeme, während andere für alle Systeme gelten. Wenn zip Elemente aus einem vorhandenen Archiv liest, liest es normalerweise die zusätzlichen Felder, die es kennt, entfernt den Rest und fügt die zusätzlichen Felder hinzu, die für das jeweilige System gelten. Wenn -X verwendet wird, entfernt zip alle alten Felder und schließt nur die zusätzlichen Zip64-Felder ein.

Wenn diese Option negiert ist (-X-), werden alle standardmäßigen zusätzlichen Felder eingeschlossen, aber es werden auch alle nicht erkannten zusätzlichen Felder kopiert.

-y

--symlinks

Symbolische Verweise (symbolic links) als solche im ZIP-Archiv speichern, anstatt die Datei, auf die der Verweis zeigt, zu komprimieren und zu speichern. Dies kann verhindern, dass mehrere Dateikopien in das Archiv aufgenommen werden, wenn zip Verzeichnisstrukturen rekursiert und direkt und über Verknüpfungen auf Dateien zugreift.

-z

--archive-comment

Zur Eingabe eines mehrzeiligen Kommentars für das gesamte ZIP-Archiv auffordern. Der Kommentar wird durch eine Zeile, die nur einen Punkt enthält, oder durch eine Dateiendebedingung (Strg+D) beendet. Der Kommentar kann auch aus einer Datei gelesen werden:

zip -z foo < foowhat

-Z cm
--compression-method cm

Standardkomprimierungsmethode festlegen. Derzeit sind die von zip unterstützten Hauptmethoden "store" und "deflate". Die Komprimierungsmethode kann auf Folgendes festgelegt werden:

store

Wenn die Komprimierungsmethode auf "store" festgelegt wird, wird erzwungen, dass zip Elemente ohne Komprimierung speichert. Dies ist in der Regel schneller als die Komprimierung der Elemente, führt aber nicht zu Einsparungen beim Speicherplatz. Diese Methode entspricht der Verwendung von -0 (Komprimierungsgrad null).

deflate

Dies ist die Standardmethode für zip. Wenn zip aber feststellt, dass Speichern besser als Komprimieren ist, wird das Element stattdessen gespeichert.

Beispiel für das Hinzufügen von bar.c zu dem Archiv foo mit der Komprimierungsmethode "store":

zip -Z store foo bar.c

Die Komprimierungsmethode kann abgekürzt werden:

zip -Zs foo bar.c

-#

( -0 , -1 , -2 , -3 , -4 , -5 , -6 , -7 , -8 , -9 )

Komprimierungsgeschwindigkeit mit der angegebenen Ziffer "#" regulieren, wobei -0 keine Komprimierung (alle Dateien speichern) festlegt, -1 die schnellste Komprimierungsgeschwindigkeit (weniger Komprimierung) festlegt und -9 die langsamste Komprimierungsgeschwindigkeit (optimale Komprimierung, Suffixliste wird ignoriert) festlegt. Der Standardkomprimierungsgrad ist -6.

-@

--names-stdin

Liste der Eingabedateien aus der Standard-Eingabe nehmen. Nur ein Dateiname pro Zeile.

Beispiele

Das einfachste Beispiel:

zip stuff *

erstellt das Archiv stuff.zip (sofern nicht bereits vorhanden) und stellt alle Dateien in komprimierter Form in dessen aktuelles Verzeichnis (das Suffix .zip wird automatisch hinzugefügt, es sei denn, der Archivname enthält bereits einen Punkt; dies ermöglicht die explizite Angabe von anderen Suffixen). Dateien, die mit "." beginnen, werden nicht eingeschlossen. Um auch diese einzuschließen:

zip stuff .* *

Selbst in diesem Fall werden aber keine Unterverzeichnisse aus dem aktuellen Verzeichnis eingeschlossen.

Um ein gesamtes Verzeichnis zu zippen, erstellt das Kommando:

zip -r foo foo

das Archiv foo.zip mit allen Dateien und Verzeichnissen im Verzeichnis foo, das im aktuellen Verzeichnis enthalten ist. Sie können ein ZIP-Archiv erstellen, das die Dateien in foo enthält, ohne den Verzeichnisnamen foo zu erfassen. Sie können die Option -j verwenden, um die Pfade wegzulassen. Beispiel:

zip -j foo foo/*

Wenn Sie wenig Speicherplatz haben, besteht möglicherweise nicht genügend Platz, um sowohl das ursprüngliche Verzeichnis als auch das entsprechende komprimierte ZIP-Archiv zu speichern. In diesem Fall können Sie das Archiv schrittweise über die Option "-m" erstellen. Wenn foo die Unterverzeichnisse tom, dick und harry enthält, können Sie Folgendes ausführen:

zip -rm foo foo/tom

zip -rm foo foo/dick

zip -rm foo foo/harry

wobei das erste Kommando foo.zip erstellt und die nächsten beiden Kommandos Dateien hinzufügen.

Nach Abschluss jedes ZIP-Kommandos wird das zuletzt erstellte Archiv gelöscht, um Platz zu schaffen, damit das nächste ZIP-Kommando funktioniert.

Verwenden Sie -s, um die Teilungsgröße festzulegen und ein geteiltes Archiv zu erstellen. Die Größe wird als eine Zahl optional gefolgt von k (kB), m (MB), g (GB) oder t (TB) angegeben. Über das Kommando

zip -s 2g -r split.zip foo

wird ein geteiltes Archiv des Verzeichnisses foo mit Teilarchiven von maximal jeweils 2 GB erstellt. Wenn der Inhalt von foo eine Größe von 5 GB hat und der Inhalt ohne Komprimierung (um dieses Beispiel einfach zu halten) in dem geteilten Archiv gespeichert wird, entstehen drei Teilarchiven split.z01 mit 2 GB, split.z02 mit 2 GB und split.zip mit etwas mehr als 1 GB.

Die Option -sp kann zum Anhalten von zip zwischen Teilarchiven verwendet werden, um zum Beispiel Wechselmedien zu wechseln. Lesen Sie jedoch weiter unten die Beschreibungen und Warnungen für -s und -sp.

zip aktualisiert zwar keine geteilten Archive, aber zip stellt die Option -O (--output-file bereit. Damit können geteilte Archive aktualisiert und in einem neuen Archiv gespeichert werden. Beispiel:

zip inarchive.zip foo.c bar.c --out outarchive.zip

liest das Archiv inarchive.zip, selbst wenn dieses geteilt ist, fügt die Dateien foo.c und bar.c hinzu und schreibt das resultierende Archiv in outarchive.zip. Wenn inarchive.zip geteilt ist, hat outarchive.zip standardmäßig dieselbe Teilungsgröße. Bitte beachten: outarchive.zip und damit erstellte geteilte Dateien werden immer und ohne Warnung überschrieben. Dies kann in der Zukunft geändert werden.

Mustervergleich

Die Shell ersetzt Dateinamen über Kommandoargumente. Im Allgemeinen gibt es folgende Sonderzeichen:

?

jedes beliebige einzelne Zeichen passt zum Muster

*

jede Anzahl von beliebigen Zeichen (einschließlich keine Zeichen) passt zum Muster

[]

jedes Zeichen in dem Bereich innerhalb der Klammern passt zum Muster (Beispiel: [a-f], [0-9]). Durch diese Form des Mustervergleichs kann ein Benutzer eine Liste von Zeichen zwischen eckigen Klammern angeben und festlegen, dass jedes der Zeichen mit dem Muster übereinstimmt.

Wenn diese Sonderzeichen gefunden werden (ohne durch einen Gegenschrägstrich oder Anführungszeichen entwertet zu sein), sucht die Shell nach Dateien für den aktuellen Pfad, die mit dem Muster übereinstimmen, und ersetzt das Argument durch eine Liste der übereinstimmenden Namen.

Das zip-Programm kann denselben Mustervergleich für Namen vornehmen, die sich in dem zu ändernden ZIP-Archiv befinden, oder im Falle der Optionen -x (Ausschließen) oder -i (Einschließen) für die Liste der zu bearbeitenden Dateien, indem Gegenschrägstriche oder Anführungszeichen verwendet werden, die die Shell anweisen, keine Namenserweiterung vorzunehmen. Wenn zip einen Namen in der Liste der zu bearbeitenden Dateien findet, sucht das Programm im Allgemeinen zunächst nach dem Namen im Dateisystem. Wenn es den Namen findet, fügt es diesen der Liste der zu bearbeitenden Dateien hinzu. Wenn es den Namen nicht findet, sucht es den Namen in dem zu ändernden ZIP-Archiv (falls vorhanden), wobei hierfür die weiter oben beschriebenen Zeichen des Mustervergleichs (falls vorhanden) verwendet werden. Für jede Übereinstimmung fügt es den jeweiligen Namen der Liste der zu bearbeitenden Dateien hinzu, es sei denn, dieser Name stimmt mit einem Namen überein, der mit der Option -x vergeben wurde, oder er stimmt mit keinem Namen überein, der mit der Option -i vergeben wurde.

Der Mustervergleich schließt den Pfad ein, und deshalb stimmen Muster wie \*.o mit Namen überein, die auf ".o" enden. Dies erfolgt unabhängig vom Pfadpräfix. Beachten Sie, dass der Gegenschrägstrich jedem der Sonderzeichen ?, *, [ und ] vorangehen muss oder dass das gesamte Argument in doppelte Anführungszeichen ("") eingeschlossen sein muss. Verwenden Sie im Allgemeinen Gegenschrägstriche oder doppelte Anführungszeichen für Pfade mit Wildcards, damit zip den Mustervergleich für Dateipfade vornimmt, und immer für Pfade und Zeichenfolgen mit Leerzeichen oder Wildcards für -i, -x, -R, -d und -U sowie überall, wo zip die Wildcards verarbeiten muss.

Variable

Die folgenden Umgebungsvariablen werden von zip wie beschrieben gelesen und verwendet.

ZIPOPT

enthält Standardoptionen, die bei der Ausführung von zip verwendet werden.

Der Inhalt dieser Umgebungsvariable wird der Kommandozeile unmittelbar nach dem zip-Kommando hinzugefügt.

ZIP

alternative Standardoptionsvariable (wenn ZIPOPT leer oder nicht vorhanden ist).

Endestatus

Der Endestatus entspricht annähernd den von PKWARE definierten Return-Codes und kann folgende Werte haben:
0Keine Fehler oder Warnungen gefunden.
2Unerwartetes Ende des ZIP-Archivs.
3Allgemeiner Fehler im Format des ZIP-Archivs gefunden. Die Verarbeitung kann dennoch erfolgreich abgeschlossen worden sein. Für einige beschädigte ZIP-Archive, die von anderen Archivierungsprogrammen erstellt wurden, bestehen einfache Problemumgehungen.

4

zip konnte bei der Programminitialisierung keinen Speicher für einen oder mehrere Puffer zuweisen.

5

Schwerwiegender Fehler im Format des ZIP-Archivs gefunden. Die Verarbeitung ist wahrscheinlich sofort fehlgeschlagen.

6

Element für eine Verarbeitung zu groß oder Element für eine Teilung mit zipsplit zu groß.

7Ungültiges Kommentarformat.
8zip -T fehlgeschlagen oder nicht genügend Arbeitsspeicher.
9Vorzeitiger Abbruch von zip über Strg+C (oder Ähnliches) durch den Benutzer.
10zip-Fehler beim Verwenden einer temporären Datei aufgetreten.
11Lese- oder Suchfehler.
12zip hat nichts zu tun.
13Fehlendes oder leeres ZIP-Archiv.
14Fehler beim Schreiben in eine Datei.
15zip konnte keine Datei erstellen, in die geschrieben werden kann.
16Ungültige Kommandozeilenparameter.
18zip konnte eine angegebene Datei nicht zum Lesen öffnen.
19zip wurde mit Optionen kompiliert, die auf diesem System nicht unterstützt werden.

Siehe auch

compress, unzip