Sie müssen ein Disk-Image, ein SQL-Dump, einen CSV-Export oder ein Roh-Backup vor einem Transfer komprimieren. xz reduziert oft besser die Größe als gzip, benötigt jedoch mehr CPU und kann bei hohen Stufen viel Speicher benötigen.
Verwenden Sie xz für eine einzelne, große und wenig komprimierte Datei. Vermeiden Sie es für ein JPEG-Foto, ein MP4-Video, ein .zip-Archiv, ein .deb-Paket oder eine Datei, deren Name bereits mit .gz, .xz oder .zst endet.
Die folgenden Schritte beschreiben die Erstellung eines .xz-Archivs, die Beibehaltung der Quelldatei, den Integritätstest, die Wahl des Komprimierungsgrades und die Überprüfung einer entfernten Kopie.

Überprüfen, ob xz verfügbar ist
Die meisten Distributionen installieren xz standardmäßig über das Paket xz-utils oder xz. Überprüfen Sie den Befehl, bevor Sie ihn in ein Backup-Verfahren integrieren.
xz --version
Unter Debian, Ubuntu und Linux Mint installieren Sie das Paket, falls der Befehl fehlt.
sudo apt update
sudo apt install xz-utils
Unter Fedora, AlmaLinux oder Rocky Linux installieren Sie das Paket mit dnf.
sudo dnf install xz
Wählen Sie xz, gzip oder zip
xz komprimiert eine einzelne Datei mit LZMA2. Es eignet sich für einen SQL-Dump, einen Text-Export, ein unkomprimiertes Disk-Image, eine konsolidierte Protokolldatei oder ein bereits erzeugtes .tar-Archiv.
- Wählen Sie xz, wenn die Größenreduktion wichtiger ist als die Geschwindigkeit.
- Wählen Sie gzip, wenn Sie eine schnelle Kompression in einem Skript, einem Pipeline oder einer Protokollrotation wünschen.
- Wählen Sie zip, wenn Sie mehrere Dateien in einem einfach unter Windows zu öffnenden Format bündeln müssen.
- Wählen Sie tar vor xz, wenn Sie eine Linux-Verzeichnisstruktur mit ihren Verzeichnissen, Namen und Berechtigungen bewahren müssen.
xz allein bündelt keine mehreren Dateien. Um einen Ordner zu komprimieren, erstellen Sie zuerst ein tar-Archiv und komprimieren Sie es dann mit xz.
tar -cf projekt.tar projekt/
xz -k projekt.tar
Der tar-Befehl kann auch direkt projekt.tar.xz erstellen.
tar -cJf projekt.tar.xz projekt/
Überprüfen Sie die Datei vor der Kompression
Überprüfen Sie den Typ und die Größe der Datei, bevor Sie eine lange Kompression durchführen. Eine bereits komprimierte Datei kann die CPU beanspruchen, ohne nennenswerte Einsparungen zu erzielen.
file backup.sql
ls -lh backup.sql
Wenn file gzip compressed data, XZ compressed data, Zip archive data, JPEG image data oder ISO Media anzeigt, testen Sie zuerst an einer kleinen Stichprobe.
Komprimieren unter Beibehaltung der Quelldatei
Ohne Option ersetzt xz backup.sql backup.sql durch backup.sql.xz. Fügen Sie -k hinzu, um das Original während der Kontrollen zu behalten.
xz -k backup.sql
Fügen Sie -v hinzu, um den Fortschritt, das Verhältnis und nützliche Informationen während der Ausführung anzuzeigen.
xz -k -v backup.sql
Überprüfen Sie anschließend, ob beide Dateien vorhanden sind, und vergleichen Sie ihre Größe.
ls -lh backup.sql backup.sql.xz
Wenn Sie das Original nicht löschen, weil die Datei .xz existiert. Testen Sie das Archiv und bestätigen Sie die Wiederherstellung, bevor Sie eine Löschung vornehmen.
Wählen Sie einen Komprimierungsgrad
Der Standardgrad von xz ist -6. Er bietet oft ein gutes Verhältnis, ist jedoch möglicherweise nicht für eine leistungsschwache Maschine oder eine dringende Wiederherstellung geeignet.
- Verwenden Sie
-1bis-3, wenn die Geschwindigkeit zählt und das maximale Ergebnis nicht Priorität hat. - Behalten Sie
-6für den allgemeinen Gebrauch auf einem komfortablen Computer. - Reservieren Sie
-7bis-9für große Dateien, die Sie selten archivieren und auf einer ausreichend ausgestatteten Maschine auch entpacken können.
xz -3 -k export.csv
xz -6 -k backup.sql
xz -9 -k archive.img
Hohe Stufen können den Speicherbedarf für die Kompression und Dekompression erhöhen. Vermeiden Sie -9 für ein Archiv, das auf einem kleinen VPS, einer alten Maschine oder einem minimalen Notfallsystem geöffnet werden musste.
CPU-Nutzung auf einem Server begrenzen
Die Option -T steuert die Anzahl der Threads. -T0 verwendet alle verfügbaren Kerne, was eine Datenbank, einen Webserver oder aktive Container verlangsamen kann.
xz -6 -T2 -k backup.sql
Auf einem Produktionsserver beginnen Sie mit -T1 oder -T2. Überwachen Sie die Belastung und erhöhen Sie nur, wenn der Server reaktionsfähig bleibt.
uptime
top
Für eine geplante Kompression führen Sie sie außerhalb der Spitzenzeiten aus und überprüfen Sie den freien Speicherplatz vor dem Start. Die Option -k hält zwei Dateien und benötigt mehr Speicherplatz.
df -h .
Überprüfen Sie die Integrität des Archivs
Testen Sie immer das Archiv mit xz -t, bevor Sie das Original löschen oder ein Backup bestätigen. Der Befehl liest die Daten im Speicher und dekomprimiert sie, ohne eine Ausgabedatei zu erstellen.
xz -t backup.sql.xz
echo $?
Ein Rückgabewert 0 zeigt an, dass der xz-Test erfolgreich war. Ein anderer Code zeigt einen Fehler an und macht es notwendig, die Quelldatei beizubehalten.
Zeigen Sie anschließend die Metadaten des Archivs an, um die unkomprimierte Größe, die komprimierte Größe, das Verhältnis und die Art der Integritätsprüfung zu überprüfen.
xz -l backup.sql.xz
xz -t überprüft, dass das Archiv gelesen werden kann. Es beweist nicht, dass eine entfernte Kopie identisch mit der lokalen Datei ist.
Überprüfen Sie einen Transfer mit SHA-256
Berechnen Sie einen SHA-256-Hash vor dem Transfer, kopieren Sie das Archiv und berechnen Sie dann die Hash-Werte am Zielort neu. Beide Zeilen sollten denselben Wert anzeigen.
sha256sum backup.sql.xz
scp backup.sql.xz admin@server:/srv/archives/
ssh admin@server 'sha256sum /srv/archives/backup.sql.xz'
Bewahren Sie den Hash zusammen mit dem Archiv auf, wenn es auf eine externe Festplatte, einen Objektspeicher oder einen anderen Server übertragen wird.
sha256sum backup.sql.xz > backup.sql.xz.sha256
Um später aus demselben Verzeichnis zu überprüfen, verwenden Sie die Datei .sha256.
sha256sum -c backup.sql.xz.sha256
Dekomprimieren, ohne das Archiv zu verlieren
unxz backup.sql.xz entfernt das Archiv nach der Extraktion. Fügen Sie -k hinzu, um die .xz-Datei zu behalten, bis Sie den wiederhergestellten Inhalt überprüft haben.
unxz -k backup.sql.xz
ls -lh backup.sql backup.sql.xz
Der entsprechende Befehl mit xz ist in Skripten nützlich, die bereits diese Binärdatei aufrufen.
xz -d -k backup.sql.xz
Wenn die Ausgabedatei bereits existiert, weigert sich xz, sie ohne -f zu überschreiben. Zwingen Sie die Extraktion nicht, bevor Sie Pfad, Datum, Größe und den tatsächlichen Bedarf an Ersetzungen verglichen haben.
ls -lh backup.sql backup.sql.xz
stat backup.sql
Für eine vorsichtige Wiederherstellung entpacken Sie in einen separaten Ordner und vergleichen Sie die erhaltene Datei, bevor Sie eine Produktionsdatei ersetzen.
mkdir -p /tmp/test-xz
cp backup.sql.xz /tmp/test-xz/
cd /tmp/test-xz
unxz -k backup.sql.xz
ls -lh backup.sql
Eine Archivdatei lesen, ohne eine Datei zu erstellen
Um schnell eine komprimierte Textdatei zu inspizieren, leiten Sie den dekomprimierten Inhalt mit xzcat an die Standardausgabe weiter. Diese Methode vermeidet das Schreiben einer großen temporären Datei.
xzcat backup.sql.xz | head -20
Um eine Zeichenfolge in einer komprimierten Textdatei zu suchen, verwenden Sie xzgrep anstelle der Dekompression des gesamten Archivs.
xzgrep -n "CREATE TABLE" backup.sql.xz
Verwenden Sie diese Befehle nicht auf einem vertraulichen Dump, wenn Ihr Terminal die Ausgabe protokolliert oder wenn Sie in einer gemeinsam genutzten Sitzung arbeiten.
Empfohlene Vorgehensweise für eine Sicherung
- Überprüfen Sie den Typ der Datei mit
fileund ihre Größe mitls -lh. - Kontrollieren Sie den verfügbaren Speicherplatz mit
df -h ., bevor Sie-kverwenden. - Komprimieren Sie mit
xz -k -vund einem passenden Niveau für die Maschine. - Begrenzen Sie die Threads mit
-T1oder-T2auf einem aktiven Server. - Testen Sie das Archiv mit
xz -tund verlangen Sie einen Rückgabewert von0. - Berechnen Sie einen Hash
sha256sumvor und nach jedem Transfer. - Testen Sie die Extraktion in einem separaten Ordner, bevor Sie eine wichtige Datei ersetzen.
xz ist nützlich, wenn Speicherplatz oder Bandbreite teurer sind als die CPU-Zeit. Es ersetzt nicht eine Backup-Strategie, einen Hash, der mit dem Archiv aufbewahrt wird, und die Durchführung eines Wiederherstellungstests vor einem Vorfall.