7z
# 7z

7z ist ein freies Dateiformat zur komprimierten Archivierung von Dateien, das mit 7-Zip von Igor Wiktorowitsch Pawlow eingeführt wurde. Die Dateinamenserweiterung ist „7z“.

Im Vergleich zu anderen Formaten ermöglicht es mit dem Lempel-Ziv-Markow-Algorithmus eine sehr hohe Datenkompressionsrate. Daneben zeichnet sich 7z durch eine offene Architektur, die Unterstützung von sehr großen Datenmengen und die Unterstützung von Unicode sowie Verschlüsselung nach dem AES-256-Standard aus. Durch die zugrundeliegende Architektur kann das 7z-Format problemlos um weitere Datenkompressionsmethoden erweitert werden.

Neben 7-Zip, dem Referenzprogramm des Entwicklers, unterstützen zahlreiche andere Programme das Erstellen und Entpacken von 7z-Dateien.

## Wichtigste Eigenschaften

* Aufsplitten von Dateien: Max. Größe der einzelnen Teile manuell festlegen.
* Offene Architektur: Dadurch kann z. B. Unterstützung für beliebige Kompressions- und Konversionsmethoden hinzugefügt werden.
* Unterstützung großer Dateien: Mit einer Unterstützung von Dateigrößen von bis zu 16 Exbibyte (ca. 16 Milliarden Gibibyte) sollte die Größenbeschränkung in der Praxis zum heutigen Zeitpunkt und auch auf langfristige Sicht irrelevant sein (wenn man den Verlauf der Festplattenkapazitäten zwischen 1980 und 2005 in die Zukunft extrapoliert, werden Festplatten mit einer Größe von 1 EB erst ab etwa 2035 verfügbar sein).
* Unicode-Dateinamen
* Progressive Kompression
* Archiv-Header-Komprimierung
* Starke Verschlüsselung: 7z implementiert starke Verschlüsselung nach dem Advanced Encryption Standard mit Schlüssellängen von 256 Bit (AES-256). Die Schlüssel werden in einem auf SHA-256 basierenden Verfahren aus einem vom Nutzer angegebenen Passwort generiert. Das Hashen wird dabei $2^{18}$ (262144) Mal hintereinander durchgeführt, was eine Brute-Force-Suche nach dem Schlüssel erschweren soll, da die benötigte Zeit für das Testen eines Schlüssels vervielfacht wird (key strengthening). Dateinamen können mit verschlüsselt werden.
* Wörterbuchgröße je nach System und Arbeitsspeicherplatz (RAM) bis zu 4 GiB bei 64-Bit-Betriebssystemen

## Datenkompressionsmethoden

Durch die offene Architektur des 7z-Formats kann es jede neue Kompressionsmethode benutzen. Derzeit sind folgende Methoden in 7z integriert:

| MethodID | Beschreibung |
| - | - |
| LZMA | standardmäßig verwendet, verbesserte Variante des LZ77-Algorithmus |
| LZMA2 | Modifizierter LZMA mit den Vorteilen des geringeren Overheads bei nicht komprimierbaren Daten und besserer Unterstützung von Multithreading |
| PPMD | Dmitry Shkarins PPMdH mit kleinen Änderungen |
| BCJ | Konverter für 32-Bit-x86-Code |
| BCJ2 | Konverter für 32-Bit-x86-Code |
| bzip2 | Burrows-Wheeler-Transformation (BWT) gefolgt von Move-to-front- und Huffman-Kodierung |
| Deflate | Modifizierter LZ77-Algorithmus ähnlich ZIP |

## Linux, Mac OS X und andere Unix-artige Systeme

Die Offenlegung des Formates machte die Portierung auf andere Betriebssysteme wie Linux möglich. Die quelloffene Referenzimplementation 7-Zip ist ein reines Windows-Programm. Die Konsolenversion wurde als p7zip auf Linux portiert. Zum echten Backup unter Unix-artigen Systemen eignet sich das 7z-Format allein jedoch nicht, da spezielle Files (Devices usw.) sowie Dateiattribute wie Besitzer und Gruppe einer Datei nicht mit abgespeichert werden – hier empfiehlt sich vorheriges Archivieren (z. B. mit tar) und nachfolgende Kompression des Archives. Zur bloßen Weitergabe von Dokumenten sind die Dateiattribute im Allgemeinen irrelevant, so dass eine reine 7z-Datei – erstellt per $ 7z a archivname.7z dateien ausreicht.

7z ist in der Lage, auf Mehrkern-Rechnern durch Multithreading (Option -mmt=<Zahl der CPUs>) eine erhebliche Beschleunigung der Kompression zu erreichen. Das Programm ist in Bezug auf den 7z-komprimierten Datenstrom nicht streamingfähig, d. h. die Optionen -si und -so funktionieren nur für die nichtkomprimierten Daten (falls derartiges gefordert ist, kann man auf das verwandte Programm xz ausweichen, welches wie gzip benutzt werden kann).

Die Konsolenversion kann mittlerweile von zahlreichen Programmen mit grafischer Oberfläche eingebunden werden, darunter auch von den vorinstallierten Archivprogrammen von Gnome (File Roller) und KDE (Ark). Unter Mac OS X steht als grafisches Tool 7zX zur Verfügung.

