# ZPAQ

ZPAQ ist ein Computerprogramm zur Datei-Archivierung und Datenkompression für Windows und Linux. Es ist unter der GPL lizenziert. Der Anwender steuert das Programm über die Kommandozeile und kann Dateien zu einem Archiv zusammenfassen. An ein bestehendes Archiv kann man neuere Dateien anhängen. Das Dateiformat lässt keine Löschvorgänge zu. ZPAQ identifiziert identische Dateien und speichert in diesem Fall nur die älteste Version ab.
ZPAQ ist ein Containerformat, das durch PAQ komprimierte Daten abspeichert. Als niedrigste Kompressionsstufe wird keine Kompression eingesetzt, als zweitniedrigste LZ77. Die höheren Stufen verwenden PAQ: Durch kontext-abhängige Verfahren – etwa zur bestmöglichen Kompression von EXE- und DLL-Dateien, die Programmcode enthalten – werden die Daten sehr stark komprimiert. Abwandlungen von PAQ sind Preisträger des Hutter-Preises.
Um die Rückwärtskompatibilität zwischen verschiedenen Versionen sicherzustellen, wird der Dekompressionsalgorithmus jeweils mit im Archiv abgespeichert.

## Versionsgeschichte

Laut Angaben des Entwicklers ist die momentane Weiterentwicklung (Stand: 2015) ins Stocken geraten, da Dell keine weiteren finanziellen Mittel für die Pflege der Software bereitstellt. Als Konsequenz daraus folgt, dass es in nächster Zeit keine neuen Releases bzw. Updates geben wird, es sei denn, dass schwerwiegende Fehler gefunden und behoben werden müssen (Stand: 1. Februar 2016).
Am 16. März 2016 wurde die Version 7.06 veröffentlicht, die einige Fehler der Vorgängerversion 7.05 behebt. Die ausführbare Datei zpaq.exe ist unter Windows Vista (32- und 64-Bit) und später (Windows 7, 8, 8.1, 10) lauffähig. zpaq64.exe läuft nur unter Windows Vista (64-Bit) und später. Für Windows XP ist neuerdings eine separate ausführbare Datei (zpaqxp.exe) verfügbar. Diese ist ab Windows XP (32-Bit) lauffähig, jedoch werden keine Alternativen Datenströme aktualisiert. Die 32-Bit Versionen können nur 2 GB Arbeitsspeicher nutzen und die Anzahl der verwendeten CPU-Kerne bzw. Threads ist standardmäßig auf zwei begrenzt. Durch die Angabe eines entsprechenden Parameters (-threads N … N ist die Anzahl der Threads) kann die Arbeit jedoch auf mehrere CPU-Kerne verteilt werden.
Version 7.07 (18. März 2016) behebt einen Fehler, der bei der Erstellung und Aktualisierung von verschlüsselten mehrteiligen Archiven auftrat.
In Version 7.08 (30. März 2016) wurden der Quelltext weiter vereinfacht und Fehler behoben. Nun sollte auch das Kompilieren mit dem Intel C/C++ Compiler und dem Visual C++ 2015 Compiler ohne Fehlermeldungen möglich sein. Die ausführbaren Dateien auf der Herstellerseite werden weiterhin mit GCC kompiliert. Das Erstellen von mehrteiligen Archiven wird (momentan) nicht mehr unterstützt. Die separate ausführbare Datei für Windows XP ist nicht mehr vorhanden bzw. erforderlich.
Version 7.09 (5. April 2016) behebt Fehler.
In Version 7.10 (8. April 2016) wurde wieder die Option für mehrteilige Archive nachgereicht.
In Version 7.11 (13. April 2016) wurden die Optionen -repack und -encrypt implementiert.
In Version 7.12 (26. April 2016) wurde die Geschwindigkeit beim Extrahieren erhöht. Die Option -encrypt (in Kombination mit -repack) wurde entfernt.
In Version 7.13 (4. Mai 2016) wurde die Unterstützung für Sparse-Dateien hinzugefügt.
Version 7.14 (19. Juli 2016): Schnelleres Backup auf Netzwerklaufwerke.
Eine vollständige Versionsübersicht ist auf der Webseite des Autors verfügbar.

## Arbeitsweise und Anwendung

Dateien, die zum Archiv hinzugefügt werden, werden jeweils in Fragmente aufgespalten und zusammen mit deren SHA1-Prüfsumme abgespeichert. Neuere Dateien werden ebenfalls zerteilt und im Fall von identischen Prüfsummen werden nur die noch nicht vorhandenen Fragmente dem Archiv hinzugefügt. Sind keine Fragmente einer hinzuzufügenden Datei bereits bekannt, wird die gesamte Datei komprimiert und hinzugefügt.

### Einige Anwendungsbeispiele bei einer Datensicherung (Backup)

zpaq Backup.zpaq <Pfad zum Verzeichnis, das archiviert werden soll> -method 1 Wird dieser Befehl wiederholt, werden nur die seit der letzten Datensicherung geänderten Dateien dem Archiv hinzugefügt. -method 1 ist der Standard-Wert. 0 hat keine Kompression zur Folge, und 5 ist eine sehr langsame, jedoch sehr gute Datenkompression.
zpaq extract Backup.zpaq entpackt den letzten Sicherungsstand im aktuellen Verzeichnis.
zpaq list Backup.zpaq -all listet alle gesicherten Dateien, mit der (normalerweise) vierstelligen Versionsnummer.
zpaq extract Backup.zpaq -until 2 entpackt den zweiten Sicherungsstand. Die erste Datensicherung hat die Versionsnummer 1.
zpaq extract Backup.zpaq -only "*Lebenslauf*" -all entpackt alles, was im Verzeichnis- oder Dateinamen das Wort „Lebenslauf“ enthält, und zwar über alle Versionen hinweg.