7z

Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:


Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.

Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:

  1. ⚓︎ Pakete installieren

  2. ⚓︎ Ein Terminal öffnen

  3. ⚓︎ Ein einzelnes Paket installieren, optional

  4. ⚓︎ Programme starten

Inhaltsverzeichnis
  1. Installation
  2. Verwendung auf Kommandozeile
    1. Kommandos
    2. Schalter
    3. Details zum Schalter -u
    4. Beispiele
  3. Tipps
  4. Links

./7zip_logo.png 7z 🇬🇧 ist sowohl ein Dateiformat als auch ein Kommandozeilenprogramm zur Datenkompression. Auf Wunsch kann man auch eine eigene grafische Oberfläche installieren. Es handelt sich um die Referenzimplementierung des hocheffizienten, freien Algorithmus LZMA, der die allermeisten anderen Algorithmen in ihrer Kompressionsstärke mitunter deutlich übertrifft (Vergleich 🇬🇧).

Ein Beispiel: LZMA komprimiert durchschnittlich 50% stärker als der Algorithmus Deflate des weit verbreiteten Formats ZIP. Auch mit proprietären, kommerziellen Formaten wie RAR kann sich 7z messen. Sensible Daten können per AES-256 verschlüsselt werden und ein Archiv kann bei Bedarf in beliebig große Teile zerlegt werden.

Dank seiner Entwicklung als Open-Source hat 7z mittlerweile große Verbreitung gefunden. Grafische Archivmanager wie File Roller, Xarchiver und Ark kommen mit dem Format zurecht, indem sie auf das hier beschriebene Kommandozeilenprogramm zurückgreifen. Für andere Betriebssysteme gibt es eine breite Palette an Programmen, die 7z von Haus aus unterstützen. Eine Auflistung findet sich auf der Projekthomepage 🇬🇧.

Hinweis:

Der Algorithmus LZMA stellt beim Komprimieren sehr hohe Ansprüche an die Systemleistung, insbesondere an den Arbeitsspeicher. Leistungsschwache Systeme werden spätestens bei großen Datenmengen und höheren Kompressionsstufen völlig in die Knie gehen („System Lock-up“). Um das Potenzial voll auszuschöpfen, sollten mindestens 2 GiB Arbeitsspeicher vorhanden sein und auch der Prozessor sollte eine Taktfrequenz von 2 GHz nicht unterschreiten.

Installation

Der Linux-Port von 7z heißt p7zip. Es finden sich mehrere Varianten in den Paketquellen[1]:

  1. Präferiert in diesem Artikel:

    • p7zip-full (universe, unterstützt noch weitere Formate und Algorithmen)

    • p7zip-rar (multiverse, optionales unfreies Modul für p7zip-full, um auch RAR-Archive entpacken zu können)

    Befehl zum Installieren der Pakete:

    sudo apt-get install p7zip-full 

    oder

  2. Alternativ installieren:

    • p7zip (universe, unterstützt nur 7z und LZMA)

    Befehl zum Installieren der Pakete:

    sudo apt-get install p7zip 

Man sollte nur eine der beiden Varianten installieren.

Das Programm von p7zip-full wird mit 7z[2] aufgerufen, dagegen p7zip mit 7zr. Der Befehl ist bei Bedarf auszutauschen.

Verwendung auf Kommandozeile

Die allgemeine Syntax des Befehls 7z aus dem Paket p7zip-full lautet:

7z KOMMANDO SCHALTER ARCHIVNAME MUSTER 

Ein Beispiel:

7z a -t7z -m0=LZMA -mmt=on -mx=9 -md=96m -mfb=256 /home/peter/kirschkuchenrezept.7z /home/peter/kirschkuchenrezept.odt 

7z erkennt Verzeichnisse selbst und arbeitet rekursiv, es muss kein spezieller Parameter angegeben werden.

Kommandos

Mit dem Kommando wird zuerst grob festgelegt, was zu tun ist. Es ist genau ein Kommando als Buchstabe als erster Aufrufparameter lt. Tabelle 1 anzugeben.

Tabelle 1: Kommandos
Kommando Beschreibung
a Dateien/Verzeichnisse einem Archiv hinzufügen bzw. eine Archivdatei erstellen. Die genaue Arbeitsweise wird in Tabelle 5 beschrieben oder mit dem Schalter -u modifiziert.
b Benchmark des Systems
d Dateien/Verzeichnisse aus einem Archiv löschen. Die genaue Arbeitsweise wird in Tabelle 5 beschrieben oder mit dem Schalter -u modifiziert.
e Einfaches Entpacken aller Dateien aus dem Archiv
l Inhalt eines Archivs auflisten.
t Archiv auf Beschädigungen prüfen.
u Archivinhalt aktualisieren. Die genaue Arbeitsweise wird in Tabelle 5 beschrieben oder mit dem Schalter -u modifiziert.
x Archiv entpacken und dabei die Verzeichnisstruktur erhalten.

Schalter

Schalter sind optional nach dem Kommando als Optionen mit einem einleitenden Bindestrich - anzugeben. Die folgende Tabelle 2 beschreibt nur einen Auszug der wichtigsten Schalter, welche die genaue Vorgehensweise festlegen. Der Fokus liegt hier auf dem Algorithmus LZMA. Informationen zu weiteren Schaltern finden sich in den Manpages 🇬🇧. Die meisten Schalter modifizieren die generelle Arbeitsweise (wie z.B. den Kompressionsgrad) des Programms, mit der Option -u kann man aber individuell für die einzelne Datei situationsabhängig die Arbeitsweise steuern.

Tabelle 2:Ausgewählte Optionen
Schalter Beschreibung
-m Algorithmus für Kompression festlegen (z.B. -m0=LZMA).
-mhe=on Die Kopfdaten des Archivs verschlüsseln.
-oZIEL Nicht ins gleiche Verzeichnis (Standard), sondern nach "ZIEL" entpacken.
-pPASSWORT Archiv mit Passwort schützen.
-t7z Dateiformat festlegen (hier 7z). Weitere Formate: xz, bzip2, gzip, tar, zip und wim
-mmt=on Multithreading für Mehrkernprozessoren oder Multiprozessorsysteme aktivieren (manuelle Festlegung der zu nutzenden Kerne mit -mmt=X)
-mx=0 Stufe der Kompressionsstärke (hier 0) vorgeben. Mögliche Werte: 0=Speichern, 1=schnell und schlecht, … , 9=langsam und gut
-mfb=64 Anzahl der Wörterbücher (hier 64) (8, 12, 16, 24, 32, 48, 64, 96, 128, 192, 256, 273)
-md=64m Größe der Wörterbücher (hier 64 MiB) (64k, 1m, 2m, 4m, 6m, 8m, 12m, 16m, 24m, 32m, 48m, 64m, 96m, 128m)
-ms=on Progressive ("solid") Kompression
-v128m Das Archiv wird in mehrere Teile (Volumes) aufgeteilt (hier 128 MiB). Größenangaben werden mit einer Einheit angegeben: b=Byte, k=Kibibyte, m=Mebibyte, g=Gibibyte. Es können verschiedene Dateigrößen erstellt werden: 7z a datei.7z -v10k -v15k -v2m. Das erste Volumen erhält 10 KiB, das Zweite erhält 15 KiB, und alle anderen erhalten 2 MiB.
-u'ARBEITSWEISEN' Der Schalter -u kann mehrfach angegeben werden und modifiziert die Arbeitsweise der Kommandos a, d und u. ARBEITSWEISEN steht für eine Zeichenfolge, welche in codierter Form die Arbeitsweise des Programms in bestimmten Situationen festlegt. Siehe dazu folgenden Abschnitt.

⚓︎

Details zum Schalter -u

Wenn man den Schalter -u verwendet, dann enthält die Zeichenfolge ARBEITSWEISEN Paare von jeweils einem Codezeichen für die Situation lt. Tabelle 3 und einem Codezeichen für die in dieser Situation gewünschte Aktion lt. Tabelle 4.

Wenn man den Schalter -u nicht verwendet, gelten die Vorgaben nach Tabelle 5.

Außerdem kann man eine neue zusätzliche Archivdatei erstellen und über die Zeichenfolge ARBEITSWEISEN die vorgegebenen situationsabhängigen Arbeitsweisen für die schon vorhandene Archivdatei überschreiben.

Experten-Info:

Die abstrakte Syntax für den Schalter -u aus der Manpage des Programms ist nicht realisiert.

Vermutlich ist dies eine bessere Beschreibung:
-u[p#][q#][r#][x#][y#][z#][!NEUER-ARCHIVNAME] oder -u-

Der Code - kann nur alleinstehend verwendet werden.

Für die Kommandos a, d und u gilt zunächst bzgl. ihrer Arbeitsweise jeweils ihre Vorgabe nach Tabelle 5, die dann durch die Angaben im Schalter -u modifiziert wird. Für jede Datei im Archiv ARCHIVNAME und jede auf MUSTER passende Datei im Dateisystem wird dann die Situation lt. Tabelle 3 hinsichtlich Existenz an beiden Stellen, Zeitstempel und Größe ermittelt und die Datei dann gemäß Tabelle 4 behandelt.

Tabelle 3: Situationen für Kommandos a, d und u
Code Situation im Dateisystem im Archiv
- Damit kann das Archiv ARCHIVNAME vor Veränderung geschützt werden, indem die Vorgaben für das jeweilige Kommando lt. Tabelle 5 überschrieben werden. Das ist sinnvoll, wenn gleichzeitig eine neue Archivdatei erstellt wird. Dieser Code muss alleine stehen. (nicht relevant)
p# Datei existiert im Archiv, wird aber nicht von MUSTER erfasst. Auswertung durch die Shell beeinflusst das Ergebnis vorhanden
q# Datei ist nur in der Archivdatei vorhanden. nicht vorhanden vorhanden
r# Datei ist nur außerhalb der Archivdatei vorhanden. vorhanden nicht vorhanden
x# Zeitstempel der archivierten Datei ist neuer. älter neuer
y# Zeitstempel der archivierten Datei ist älter. neuer älter
z# Zeitstempel und Größe der archivierten und der nicht archivierten Datei sind gleich. gleich gleich
w# Zeitstempel kann nicht ausgewertet werden, aber archivierte und nicht archivierte Datei haben unterschiedliche Größe. vorhanden vorhanden
!NEUER-ARCHIVNAME Angabe eines Dateinamens für ein neues Archiv. Diese Angabe muss an letzter Stelle der Zeichenfolge stehen. Die vor dem Ausrufezeichen definierten situationsabhängigen Arbeitsweisen gelten für die hier angegebene neue Archivdatei.
Das Zeichen ! ist ein Sonderzeichen für die Shell und muss daher immer vor Interpretation geschützt werden; dies kann durch Quotierung mit Anführungszeichen oder einem voran gestellten fallenden Schrägstrich \ erfolgen.
(nicht relevant)

Bei den Buchstaben p, q,… ist das Zeichen # jeweils durch eine Ziffer nach Tabelle 4 zu ersetzen.

Tabelle 4: Mögliche Aktionen
Code Beschreibung der Aktion
0 Der Code sorgt dafür, dass die betroffenen Dateien nach der Bearbeitung nicht im entsprechenden Archiv enthalten sind, indem er sie daraus entfernt oder gar nicht erst aufnimmt.
1 Bestehende Datei im Archiv wird beibehalten bzw. in die neue Archivdatei übernommen.
2 Datei im Archiv wird durch die nicht archivierte Datei ersetzt (ggf. nur in der neuen Archivdatei).
3 In der Archivdatei werden sogenannte Anti-Dateien erzeugt, die beim Extrahieren dafür sorgen, dass im Zielverzeichnis vorhandene Dateien dieses Namens gelöscht werden (nur mit dem 7z-Format unterstützt)-

⚓︎ Die nachfolgende Tabelle beschreibt, welche Arbeitsweisen für die Kommandos a, d und u ohne explizite Verwendung des Schalters -u gelten.

Tabelle 5: Vorgaben für ARBEITSWEISEN bei den Kommandos a, d und u
Kommando Situation und Aktion
p q r x y z w
d (delete) 1 0 0 0 0 0 0
a (add) 1 1 2 2 2 2 2
u (update) 1 1 2 1 2 1 2

Beispiele

Tipps