Articles

So komprimieren oder entpacken Sie Dateien vom Linux-Terminal

  • Dave McKay

    @TheGurkha

  • Aktualisiert Mai 28, 2019, 5:15pm EDT
Linux Shell prompt
Fatmawati Achmad Zaenuri/.com

ZIP-Dateien sind ein universelles Archiv, das häufig auf Windows-, macOS- und sogar Linux-Systemen verwendet wird. Sie können ein Zip-Archiv erstellen oder Dateien mit einigen gängigen Linux-Terminalbefehlen entpacken.

Das ZIP-komprimierte Archivdateiformat

Dank der Dominanz des ZIP-Formats im Windows-Bereich sind ZIP-Dateien wahrscheinlich die weltweit häufigste Form komprimierter Archive.

Während .Teer.gz- und tar.bz2-Dateien sind unter Linux üblich, Windows-Benutzer senden Ihnen wahrscheinlich ein Archiv im ZIP-Format. Und wenn Sie einige Dateien archivieren und an einen Windows-Benutzer senden möchten, ist das ZIP-Format die einfachste und kompatibelste Lösung für alle.

RELATED: So extrahieren Sie Dateien aus einem .Teer.gz oder .Teer.bz2-Datei unter Linux

zip, unzip und andere Dienstprogramme

Möglicherweise wissen Sie bereits, dass Linux- und Unix-ähnliche Betriebssysteme wie macOS über Tools verfügen, mit denen Sie ZIP-Dateien erstellen und daraus extrahieren können, die als zip und unzip bezeichnet werden. Es gibt jedoch eine ganze Familie verwandter Dienstprogramme wie zipcloakzipdetailszipsplit und zipinfo.

Werbung

Wir haben einige Linux-Distributionen überprüft, um zu sehen, ob sie diese Dienstprogramme in der Standardinstallation enthalten. Alle Dienstprogramme waren in Ubuntu 19.04, 18.10 und 18.04 vorhanden. Sie waren auch in Manjaro 18.04. Fedora 29 enthielt zip und unzip, aber keines der anderen Dienstprogramme, und das war auch bei CentOS der Fall.

Um die fehlenden Elemente auf Fedora 29 zu installieren, verwenden Sie den folgenden Befehl:

sudo dnf install perl-IO-Compress

Zip-Installationsbefehl für Fedora

Um die fehlenden Elemente auf CentOS 7 zu installieren, verwenden Sie den folgenden Befehl:

sudo yum install perl-IO-Compress

Zip-Installationsbefehl in Centos

Werbung

Wenn eines der Zip-Dienstprogramme in einer Linux-Distribution fehlt, die oben nicht erwähnt wurde, verwenden Sie das Paketverwaltungstool dieser Linux-Distribution, um das erforderliche Paket zu installieren.

So erstellen Sie eine ZIP-Datei mit dem Befehl zip

Um eine ZIP-Datei zu erstellen, müssen Sie zip den Namen der Archivdatei und die darin enthaltenen Dateien angeben. Sie müssen das “ nicht hinzufügen.zip“ Erweiterung auf den Archivnamen, aber es schadet nicht, wenn Sie tun.

Um eine Datei mit dem Namen source_code.zip zu erstellen, die alle C-Quellcodedateien und Header-Dateien im aktuellen Verzeichnis enthält, verwenden Sie diesen Befehl:

zip source_code *.c *.h

zip-Befehl in einem Terminalfenster

Jede Datei wird so aufgelistet, wie sie hinzugefügt wurde. Der Name der Datei und der Komprimierungsgrad, der für diese Datei erreicht wurde, werden angezeigt.

Ausgabe vom Zip-Befehl in einem Terminalfenster

Werbung

Wenn Sie sich das neue ZIP-Archiv ansehen, können Sie sehen, dass die „.die Dateierweiterung „zip“ wurde automatisch von zip hinzugefügt.

ls -l source_code.zip

Klicken Sie in einem Terminalfenster auf Zip-Archiv

Wenn Sie die Ausgabe von zip beim Erstellen der ZIP-Datei nicht sehen möchten, verwenden Sie die Option -q (leise).

zip -q source_code *.c *.h

-q quiet Option in einem Terminalfenster

Verzeichnisse in ZIP-Dateien einschließen

Um Unterverzeichnisse in die ZIP-Datei aufzunehmen, verwenden Sie die Option -r (rekursiv) und geben Sie den Namen des Unterverzeichnisses in die Befehlszeile ein. Verwenden Sie diesen Befehl, um wie zuvor eine ZIP-Datei zu erstellen und auch das Archiv-Unterverzeichnis einzuschließen.

zip -r -q source_code archive/ *.c *.h

-r rekursive Option in einem Terminalfenster

Um Rücksicht auf die Person zu nehmen, die die Dateien aus der von Ihnen erstellten ZIP-Datei extrahiert, ist es oft höflich, ZIP-Dateien mit den darin enthaltenen Dateien in einem Verzeichnis zu erstellen. Wenn die Person, die die ZIP-Datei erhält, sie extrahiert, werden alle Dateien ordentlich in einem Verzeichnis auf ihrem Computer abgelegt.

Werbung

Im folgenden Befehl archivieren wir das work Verzeichnis und alle Unterverzeichnisse. Beachten Sie, dass dieser Befehl aus dem übergeordneten Verzeichnis des Ordners work ausgegeben wird.

zip -r -q source_code work/

Zippen des Arbeitsverzeichnisses in einem Terminalfenster

Einstellen der Komprimierungsstufe

Sie können festlegen, wie stark die Komprimierung auf die Dateien angewendet wird, wenn sie dem ZIP-Archiv hinzugefügt werden. Der Bereich reicht von 0 bis 9, wobei 0 überhaupt keine Komprimierung ist. Je höher die Komprimierung, desto länger dauert die Erstellung der ZIP-Datei. Bei mittelgroßen ZIP-Dateien ist der Zeitunterschied keine signifikante Strafe. Aber dann, für bescheiden große ZIP-Dateien, ist die Standardkomprimierung (Stufe 6) wahrscheinlich sowieso gut genug.

Um zip um eine bestimmte Komprimierungsstufe zu verwenden, übergeben Sie die Nummer als Option in der Befehlszeile mit einem „-“ wie folgt:

zip -0 -r -q source_code work/

-0 Komprimierungsoption in einem Terminalfenster

Die Standardkomprimierungsstufe ist 6. Es ist nicht erforderlich, die Option -6 , aber es schadet nicht, wenn Sie dies tun.

zip -r -q source_code work/

Komprimierung der Stufe 6 in einem Terminalfenster

Die maximale Komprimierungsstufe ist Stufe 9.

zip -9 -r -q source_code work/

-9 Komprimierung in einem Terminalfenster

Werbung

Bei der Auswahl der hier archivierten Dateien und Verzeichnisse beträgt der Unterschied zwischen keiner Komprimierung (Stufe 0) und der Standardkomprimierung (Stufe 6) 400 KB. Der Unterschied zwischen der Standardkomprimierung und der höchsten Komprimierungsstufe (Stufe 9) beträgt nur 4 KB.

Das mag nicht viel erscheinen, aber für Archive mit Hunderten oder sogar Tausenden von Dateien würde die geringe zusätzliche Komprimierung pro Datei zu einer lohnenden Platzersparnis führen.

Hinzufügen von Passwörtern zu ZIP-Dateien

Das Hinzufügen von Passwörtern zu ZIP-Dateien ist einfach. Verwenden Sie die -e (verschlüsseln) Option und Sie werden aufgefordert, Ihr Passwort einzugeben und es zur Überprüfung erneut einzugeben.

zip -e -r -q source_code work/

Hinzufügen von Passwörtern zu Zip-Dateien in einem Terminalfenster

So entpacken Sie eine ZIP-Datei mit dem Befehl entpacken

Um die Dateien aus einer ZIP-Datei zu extrahieren, verwenden Sie den Befehl entpacken und geben Sie den Namen der ZIP-Datei an. Beachten Sie, dass Sie die „.zip“ Erweiterung.

unzip source_code.zip

der Befehl zum Entpacken in einem Terminalfenster

Werbung

Wenn die Dateien extrahiert werden, werden sie im Terminalfenster aufgelistet.

Ausgabe von unzip in einem Terminalfenster

ZIP-Dateien enthalten keine Details zum Dateibesitz. Für alle extrahierten Dateien ist der Eigentümer auf den Benutzer festgelegt, der sie extrahiert.

Genau wie zip hat unzip eine -q (leise) Option, so dass Sie die Dateiliste nicht sehen müssen, wenn die Dateien extrahiert werden.

unzip -q source_code.zip

entpacken Sie die Option -q in einem Terminalfenster

Extrahieren von Dateien in ein Zielverzeichnis

Um die Dateien in einem bestimmten Verzeichnis extrahieren zu lassen, verwenden Sie die Option -d (Verzeichnis) und geben Sie den Pfad zum sie möchten, dass das Archiv extrahiert wird.

unzip -q source_code.zip -d ./development

entpacken Sie in einem Terminalfenster in ein Zielverzeichnis

Extrahieren Sie passwortgeschützte ZIP-Dateien

Wenn eine ZIP-Datei mit einem Kennwort erstellt wurde, werden Sie von unzip nach dem Kennwort gefragt. Wenn Sie nicht das richtige Passwort angeben, unzip werden die Dateien nicht extrahiert.

unzip -q source_code.zip

der Befehl mit Passwort entpacken in einem Terminalfenster

Werbung

Wenn es Ihnen egal ist, dass Ihr Passwort von anderen gesehen oder in Ihrem Befehlsverlauf gespeichert wird, können Sie das Passwort in der Befehlszeile mit dem -P (Passwort) Option. (Sie müssen ein Großbuchstaben „P.“)

unzip -P fifty.treacle.cutlass -q source_code.zip

Option zum Entpacken mit Kennwort in einem Terminalfenster

Dateien ausschließen

Wenn Sie eine bestimmte Datei oder Dateigruppe nicht extrahieren möchten, verwenden Sie die Option -x (ausschließen). In diesem Beispiel möchten wir alle Dateien mit Ausnahme derjenigen extrahieren, die mit a “ enden.h“ Erweiterung.

unzip -q source_code.zip -x *.h

Option in einem Terminalfenster entpacken ausschließen

Dateien überschreiben

Angenommen, Sie haben ein Archiv extrahiert, aber einige der extrahierten Dateien versehentlich gelöscht.

Werbung

Eine schnelle Lösung dafür wäre, die Dateien noch einmal zu extrahieren. Wenn Sie jedoch versuchen, die ZIP-Datei im selben Verzeichnis wie zuvor zu extrahieren, werden Sie unzip aufgefordert, eine Entscheidung zum Überschreiben der Dateien zu treffen. Es wird eine der folgenden Antworten erwarten.

Abgesehen von der r (rename) Antwort, sind diese Antworten case sensitive.

  • y: Ja, überschreibe diese Datei
  • n: Nein, überschreibe diese Datei nicht
  • A: Alle, überschreibe alle Dateien
  • N: Keine, überschreibe keine der Dateien
  • r: Umbenennen, entpacke diese Datei, aber gib ihr einen neuen Namen. Sie werden zur Eingabe eines neuen Namens aufgefordert.

Eingabeaufforderungen in einem Terminalfenster überschreiben

Um unzip zum Überschreiben vorhandener Dateien zu zwingen, verwenden Sie die Option -o (Überschreiben).

unzip -o -q source_code.zip

Option Überschreiben in einem Terminalfenster

Der effizienteste Weg, die fehlenden Dateien zu ersetzen, wäre, unzip nur Dateien im Archiv zu extrahieren, die sich nicht im Zielverzeichnis befinden. Verwenden Sie dazu die Option -n (niemals überschreiben).

unzip -n source_code.zip

entpacken Sie mit der Option -n never overwrite in einem Terminalfenster

Blick in eine ZIP-Datei

Es ist oft nützlich und lehrreich, eine Liste der Dateien in einer ZIP-Datei anzuzeigen, bevor Sie sie extrahieren. Sie können dies mit der Option -l (Listenarchiv) tun. Es wird durch less geleitet, um die Ausgabe verwaltbar zu machen.

unzip -l source_code.zip | less

entpacken Sie die Option in einem Terminalfenster

Werbung

Die Ausgabe zeigt die Verzeichnisse und Dateien in der ZIP-Datei, ihre Länge sowie die Uhrzeit und das Datum, an dem sie dem Archiv hinzugefügt wurden. Drücken Sie „q“, um less zu beenden.

Archivausgabe in einem Terminalfenster auflisten

Es gibt andere Möglichkeiten, in eine ZIP-Datei zu schauen, die verschiedene Arten von Informationen liefert, wie wir sehen werden.

Fügen Sie ein Passwort mit dem Befehl zipcloak hinzu

Was können Sie tun, wenn Sie eine ZIP-Datei erstellt, aber vergessen haben, ein Passwort hinzuzufügen? Mit dem Befehl zipcloak können Sie der ZIP-Datei schnell ein Kennwort hinzufügen. Übergeben Sie den Namen der ZIP-Datei in der Befehlszeile. Sie werden zur Eingabe eines Passworts aufgefordert. Sie müssen das Passwort überprüfen, indem Sie es ein zweites Mal eingeben.

zipcloak source_code.zip

zipcloak in einem Terminalfenster

Dateidetails mit dem Befehl zipdetails anzeigen

Der Befehl zipdetails zeigt Ihnen viele Informationen zur ZIP-Datei an. Die einzige vernünftige Möglichkeit, mit der Menge an Ausgabe umzugehen, die dieser Befehl geben kann, besteht darin, ihn über less .

zipdetails source_code.zip | less

der Befehl zipdetails in einem Terminalfenster

Werbung

Beachten Sie, dass die Informationen Dateinamen enthalten, auch wenn die ZIP-Datei kennwortgeschützt ist. Diese Art von Informationen wird in der ZIP-Datei als Metadaten gespeichert und ist nicht Teil der verschlüsselten Daten.

Ausgabe von zipdetails in einem Terminalfenster

Suche innerhalb der Datei Mit dem Befehl zipgrep

Mit dem Befehl zipgrep können Sie innerhalb der Dateien in einer ZIP-Datei suchen. Im folgenden Beispiel möchten wir wissen, welche Dateien in der ZIP-Datei den Text „keyval.h“ in ihnen.

zipgrep keyval.h source_code.zip

der Befehl zipgrep in einem Terminalfenster

Wir können sehen, dass die Dateien slang.c und getval.c die Zeichenfolge „keyval.h“.Wir können auch sehen, dass sich zwei Kopien jeder dieser Dateien in verschiedenen Verzeichnissen in der ZIP-Datei befinden.

Informationen mit dem Befehl zipinfo anzeigen

Der Befehl zipinfo bietet Ihnen eine weitere Möglichkeit, in eine ZIP-Datei zu schauen. Wie zuvor leiten wir die Ausgabe über less .

zipinfo source_code.zip | less

zipinfo-Befehl in einem Terminalfenster

Von links nach rechts zeigt die Ausgabe:

  • Die Dateiberechtigungen
  • Die Version des zum Erstellen der ZIP-Datei verwendeten Tools
  • Die ursprüngliche Dateigröße
  • Ein Dateideskriptor (unten beschrieben)
  • Die Methode der Komprimierung (in diesem Fall Deflation)
  • Der Daten- und Zeitstempel
  • Der Name der Datei und eines beliebigen Verzeichnisses
Werbung

Der Dateideskriptor besteht aus zwei Charakteren. Das erste Zeichen ist ein „t“ oder ein „b“, um eine Text- oder Binärdatei anzugeben. Wenn es sich um einen Großbuchstaben handelt, wird die Datei verschlüsselt. Das zweite Zeichen kann eines von vier Zeichen sein. Dieses Zeichen gibt an, welche Art von Metadaten für diese Datei enthalten sind: keine, ein erweiterter lokaler Header, ein „zusätzliches Feld“ oder beides.

  • -: Wenn keiner vorhanden ist, ist das Zeichen ein Bindestrich
  • l: Wenn ein erweiterter lokaler Header, aber kein zusätzliches Feld vorhanden ist
  • x: Wenn kein erweiterter lokaler Header, aber ein zusätzliches Feld vorhanden ist
  • X: wenn es einen erweiterten lokalen Header und ein zusätzliches Feld gibt

zipinfo-Ausgabe in einem Terminalfenster

Teilen Sie die Datei mit dem Befehl zipsplit

Wenn Sie die ZIP-Datei an eine andere Person senden müssen, aber Größenbeschränkungen oder Probleme bei der Übertragung der Datei bestehen, können Sie die zipsplit Befehl, um die ursprüngliche ZIP-Datei in eine Reihe kleinerer ZIP-Dateien aufzuteilen.

Mit der Option -n (size) können Sie eine maximale Größe für jede der neuen ZIP-Dateien festlegen. In diesem Beispiel teilen wir die Datei source_code.zip . Wir möchten nicht, dass eine der neuen ZIP-Dateien größer als 100 KB (102400 Bytes) ist.

zipsplit -n 102400 source_code.zip

der Befehl zipsplit in einem Terminalfenster

Werbung

Die von Ihnen gewählte Größe darf nicht kleiner sein als die Größe einer der Dateien in der ZIP-Datei.

Mit diesen Befehlen können Sie Ihre eigenen ZIP-Dateien erstellen, die empfangenen ZIP-Dateien entpacken und verschiedene andere Vorgänge ausführen, ohne das Linux-Terminal zu verlassen.

Dave McKay
Dave McKay benutzte zuerst Computer, als gelochtes Papierband in Mode war, und er programmiert seitdem. Nach über 30 Jahren in der IT-Branche ist er heute Vollzeit-Technologiejournalist. Im Laufe seiner Karriere war er als freiberuflicher Programmierer, Leiter eines internationalen Softwareentwicklungsteams, Projektleiter für IT-Services und zuletzt als Datenschutzbeauftragter tätig. Dave ist ein Linux Evangelist und Open Source Advocate.Vollständige Biografie lesen “