So komprimieren oder entpacken Sie Dateien vom Linux-Terminal

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 aus einem entpacken.

Das Dateiformat für komprimiertes ZIP-Archiv

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

Während .tar.gz- und tar.bz2-Dateien unter Linux üblich sind, senden Windows-Benutzer Ihnen wahrscheinlich ein Archiv im ZIP-Format. 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.

VERBINDUNG: So extrahieren Sie Dateien aus einer .tar.gz- oder .tar.bz2-Datei unter Linux

zip, unzip und andere Dienstprogramme

Sie können bereits wissen , dass Linux und Unix-ähnliche Betriebssysteme wie macOS Werkzeuge, damit Sie ZIP - Dateien und Extrahieren von Dateien aus ihnen erstellen, genannt zipund unzip. Aber es gibt eine ganze Familie von verwandten Dienstprogramme wie zipcloak, zipdetails, zipsplit, und zipinfo.

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

Verwenden Sie den folgenden Befehl, um die fehlenden Elemente auf Fedora 29 zu installieren:

sudo dnf perl-IO-Compress installieren

Verwenden Sie den folgenden Befehl, um die fehlenden Elemente unter CentOS 7 zu installieren:

sudo yum installiere perl-IO-Compress

Wenn eines der zip-Dienstprogramme in einer Linux-Distribution fehlt, die oben nicht erwähnt wurde, installieren Sie das erforderliche Paket mit dem Paketverwaltungstool dieser Linux-Distribution.

So erstellen Sie eine ZIP-Datei mit dem Befehl zip

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

source_code.zipVerwenden Sie diesen Befehl, um eine Datei mit dem Namen zu erstellen, die alle C-Quellcodedateien und Headerdateien im aktuellen Verzeichnis enthält:

zip source_code * .c * .h

Jede Datei wird beim Hinzufügen aufgelistet. Der Name der Datei und der Komprimierungsgrad, der für diese Datei erzielt wurde, werden angezeigt.

Wenn Sie sich das neue ZIP-Archiv ansehen, sehen Sie, dass die Dateierweiterung ".zip" von automatisch hinzugefügt wurde zip.

ls -l source_code.zip

Wenn Sie die Ausgabe zipbeim Erstellen der ZIP-Datei nicht sehen möchten , verwenden Sie die -qOption (leise).

zip -q Quellcode * .c * .h

Einschließen von Verzeichnissen in ZIP-Dateien

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

zip -r -q Quellcode-Archiv / * .c * .h

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

Im folgenden Befehl werden das workVerzeichnis und alle Unterverzeichnisse archiviert . Beachten Sie, dass dieser Befehl aus dem übergeordneten Verzeichnis des workOrdners ausgegeben wird .

zip -r -q Quellcode Arbeit /

Einstellen der Komprimierungsstufe

Sie können festlegen, wie viel Komprimierung auf die Dateien angewendet wird, wenn diese 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 das Erstellen der ZIP-Datei. Bei ZIP-Dateien mit bescheidener Größe ist der Zeitunterschied keine wesentliche Strafe. Aber für ZIP-Dateien mit bescheidener Größe ist die Standardkomprimierung (Stufe 6) wahrscheinlich sowieso gut genug.

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

zip -0 -r -q Quellcode Arbeit /

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

zip -r -q Quellcode Arbeit /

Die maximale Komprimierungsstufe ist Stufe 9.

zip -9 -r -q Quellcode Arbeit /

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 scheint nicht viel zu sein, aber für Archive, die Hunderte oder sogar Tausende von Dateien enthalten, 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. Wenn Sie die -eOption (verschlüsseln) verwenden, werden Sie aufgefordert, Ihr Kennwort einzugeben und es zur Überprüfung erneut einzugeben.

zip -e -r -q Quellcode Arbeit /

So entpacken Sie eine ZIP-Datei mit dem Befehl entpacken

Verwenden Sie zum Extrahieren der Dateien aus einer ZIP-Datei den Befehl unzip und geben Sie den Namen der ZIP-Datei an. Beachten Sie, dass Sie die Erweiterung ".zip" angeben müssen.

entpacke source_code.zip

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

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

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

entpacke -q source_code.zip

Extrahieren von Dateien in ein Zielverzeichnis

Um die Dateien in ein bestimmtes Verzeichnis extrahieren zu lassen, verwenden Sie die -dOption (Verzeichnis) und geben Sie den Pfad zu dem Verzeichnis an, in das das Archiv extrahiert werden soll.

entpacken Sie -q source_code.zip -d ./development

Extrahieren Sie passwortgeschützte ZIP-Dateien

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

entpacke -q source_code.zip

Wenn Sie nicht möchten, dass Ihr Kennwort von anderen gesehen oder in Ihrem Befehlsverlauf gespeichert wird, können Sie das Kennwort in der Befehlszeile mit der -POption (Kennwort) angeben. (Sie müssen ein Großbuchstaben "P." verwenden)

entpacken -P fünfzig.treacle.cutlass -q Quellcode.zip

Dateien ausschließen

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

entpacken Sie -q Quellcode.zip -x * .h

Dateien überschreiben

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

Eine schnelle Lösung dafür wäre, die Dateien erneut zu extrahieren. Wenn Sie jedoch versuchen, die ZIP-Datei im selben Verzeichnis wie zuvor zu extrahieren, unzipwerden Sie zu einer Entscheidung über das Überschreiben der Dateien aufgefordert. Es wird eine der folgenden Antworten erwartet.

Abgesehen von der rAntwort (Umbenennen) wird bei diesen Antworten zwischen Groß- und Kleinschreibung unterschieden.

  • y: Ja, überschreibe diese Datei
  • n: Nein, überschreibe diese Datei nicht
  • A: Alle, überschreibe alle Dateien
  • N: Keine, überschreibe keine der Dateien
  • r: Umbenennen, diese Datei extrahieren, aber einen neuen Namen geben. Sie werden aufgefordert, einen neuen Namen einzugeben.

unzipVerwenden Sie die -oOption (überschreiben), um das Überschreiben vorhandener Dateien zu erzwingen .

entpacke -o -q source_code.zip

Der effizienteste Weg, die fehlenden Dateien zu ersetzen, besteht darin, unzipnur alle Dateien im Archiv zu extrahieren, die sich nicht im Zielverzeichnis befinden. Verwenden Sie dazu die -nOption (niemals überschreiben).

entpacken Sie -n Quellcode.zip

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 -lOption (Listenarchiv) tun . Es wird durchgeleitet less, um die Ausgabe überschaubar zu machen.

entpacken -l Quellcode.zip | weniger

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 den Vorgang zu beenden less.

Es gibt andere Möglichkeiten, einen Blick in eine ZIP-Datei zu werfen, die verschiedene Arten von Informationen enthalten, wie wir noch sehen werden.

Fügen Sie mit dem Befehl zipcloak ein Passwort hinzu

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

zipcloak source_code.zip

Dateidetails anzeigen Mit dem Befehl zipdetails

Der zipdetailsBefehl zeigt Ihnen viele Informationen zur ZIP-Datei. Der einzig sinnvolle Weg, um mit der Menge an Ausgabe umzugehen, die dieser Befehl geben kann, besteht darin, sie durchzuleiten less.

zipdetails source_code.zip | weniger

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.

Suche in der Datei Mit dem Befehl zipgrep

Mit dem zipgrepBefehl 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" enthalten.

zipgrep keyval.h source_code.zip

Wir können sehen, dass die Dateien slang.cund getval.cdie Zeichenfolge "keyval.h" enthalten. Wir können auch sehen, dass es zwei Kopien jeder dieser Dateien in verschiedenen Verzeichnissen in der ZIP-Datei gibt.

Informationen anzeigen Mit dem Befehl zipinfo

Der zipinfoBefehl bietet Ihnen eine weitere Möglichkeit, in eine ZIP-Datei zu schauen. Nach wie vor leiten wir die Ausgabe durch less.

zipinfo source_code.zip | weniger

Von links nach rechts zeigt die Ausgabe:

  • Die Dateiberechtigungen
  • Die Version des Tools, mit dem die ZIP-Datei erstellt wurde
  • Die ursprüngliche Dateigröße
  • Ein Dateideskriptor (unten beschrieben)
  • Die Kompressionsmethode (in diesem Fall Deflation)
  • Der Daten- und Zeitstempel
  • Der Name der Datei und eines beliebigen Verzeichnisses

Der Dateideskriptor besteht aus zwei Zeichen. Das erste Zeichen ist ein "t" oder ein "b", um einen Text oder eine Binärdatei anzuzeigen. 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 keines vorhanden ist, wird das Zeichen ein Bindestrich sein
  • l: Wenn es einen erweiterten lokalen Header gibt, aber kein zusätzliches Feld
  • x: Wenn es keinen erweiterten lokalen Header gibt, aber ein zusätzliches Feld
  • X: Wenn es einen erweiterten lokalen Header und ein zusätzliches Feld gibt

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 auftreten, können Sie den zipsplitBefehl verwenden, um die ursprüngliche ZIP-Datei in eine Reihe kleinerer ZIP-Dateien aufzuteilen.

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

zipsplit -n 102400 source_code.zip

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, empfangene ZIP-Dateien entpacken und verschiedene andere Vorgänge ausführen, ohne das Linux-Terminal jemals verlassen zu müssen.