Komprimieren und Archivieren unter Debian 13: tar, zip, xz, zstd, 7z und rar
Komprimieren klingt nach einer Entscheidung, die man einmal trifft – aber tar, zip,
xz, zstd, 7z und rar lösen unterschiedliche Probleme: Das eine bündelt Dateien,
das andere komprimiert einen Stream, das dritte verschlüsselt beides zusammen. Dieser Artikel trennt
das sauber, zeigt die Befehle für Debian 13 – und stellt die Verfahren mit gemessenen Größen und Laufzeiten
gegenüber, damit du nicht nach Gefühl wählst.
Archiv und Kompression sind zwei Dinge
Der häufigste Denkfehler: tar komprimiert nicht. GNU tar bündelt Dateien zu einem Strom – nicht
mehr. Erst in Kombination mit gzip, bzip2, xz oder zstd entsteht ein
komprimiertes Archiv. Deshalb ist backup.tar oft fast so groß wie die Daten selbst.
| Aufgabe | Werkzeug in Debian 13 | Ergebnis |
|---|---|---|
| Viele Dateien in eine Datei bündeln | tar | .tar – unkomprimiert, dafür schnell und einfach prüfbar |
| Einen einzelnen Strom komprimieren | gzip, bzip2, xz, zstd, lz4 | Eine komprimierte Datei – kennt selbst keine Ordnerstruktur |
| Bündeln, komprimieren und Rechte speichern | zip, 7z, rar | Ein Containerarchiv mit Inhaltsverzeichnis |
| Bündeln, komprimieren und verschlüsseln | 7z, oder tar plus age/gpg | Archiv mit Passwort oder Schlüssel |
tar nur bündelt, kannst du
das Kompressionsverfahren jederzeit wechseln – ohne die Daten neu zu sortieren. Genau deshalb ist
tar.zst heute die bessere Wahl als das alte tar.gz, während zip dort
sinnvoll bleibt, wo Windows oder ein fremdes Gegenüber die Datei öffnen muss.
Die Formate im Überblick
| Endung | Container | Verfahren | Typischer Einsatz | Windows-Kompatibilität |
|---|---|---|---|---|
.tar | ja | keines | Backups vor dem Komprimieren, Datenaustausch auf Unix | Nur mit Zusatzprogramm |
.tar.gz | ja | deflate (gzip) | Der Klassiker, überall lesbar | Über 7-Zip oder WSL gut |
.tar.bz2 | ja | bzip2 | Altbestand, alte Anleitungen | Ebenso |
.tar.xz | ja | LZMA2 (xz) | Distributionen, Software-Quellen: kleinste Dateien | Über 7-Zip |
.tar.zst | ja | Zstandard | Backups, Pakete, Kernel – der moderne Standard | Über 7-Zip ab aktuellen Versionen |
.zip | ja | deflate | Austausch mit Windows, einzelne Dateien, überall öffnen ohne Zusatzsoftware | Direkt im Datei-Explorer |
.7z | ja | LZMA2, AES | Große Backups, Verschlüsselung, beste Kompression ohne xz-Eigenheiten | Über 7-Zip (Windows), selten vorinstalliert |
.rar | ja | proprietär | Verteilung durch andere; selten die eigene Wahl | Vorinstalliert auf Windows |
tar.zst. Austausch mit Windows-Nutzern →
zip. Verteilung von Software oder Quelltext → tar.xz. Verschlüsselte
Einzelarchive → 7z. Fremde .rar-Dateien → unrar oder 7z.
Der Messaufbau
Benchmark-Zahlen aus dem Netz sind für deinen Rechner wertlos, wenn der Inhalt ein anderer ist. Deshalb habe ich selbst gemessen – mit einem Korpus, der typische Selbsthosting-Daten nachbildet:
| Teil des Korpus | Größe | Warum enthalten |
|---|---|---|
| Server-Log (Text, hoch redundant) | 12 MB | Der Idealfall: hierarchisches Textmaterial wie Logs, Quelltext, HTML |
| Binärdateien (Module, ausführbare Dateien) | 6,4 MB | Der mäßige Fall: Binärdaten mit vielen Wiederholungen |
| Zufallsdaten | 2 MB | Der Grenzfall: nicht komprimierbar – zeigt das Ende der Fahnenstange |
| Gesamt | 19,4 MiB | Ein realistischer Mix statt nur Text |
Gemessen wurde auf einem Ryzen 9 9950X3D (16 Kerne, 32 Threads) unter CachyOS mit GNU tar 1.35, xz 5.8, zstd 1.5.7, 7-Zip 26.02 und brotli. Die Laufzeiten hängen an dieser Maschine, die Kompressionsquoten nicht – die Quote ist eine Eigenschaft des Verfahrens und des Inhalts.
tar-Läufe sind einläufig gelaufen, außer wo
ausdrücklich -T0 steht; 7-Zip nutzt von sich aus mehrere Threads. Und: Hätte der Korpus nur
aus Text bestanden, fielen die Unterschiede größer aus – hätte er nur aus Zufallsdaten bestanden, wären
alle Verfahren wirkungslos.
Gemessene Ergebnisse
Ausgangsgröße: 19,4 MiB. „Quote“ ist die Archivgröße im Verhältnis zu den Rohdaten – 25 % heißt also: auf ein Viertel geschrumpft.
| Verfahren | Größe | Quote | Zeit | Einordnung |
|---|---|---|---|---|
| tar, unkomprimiert | 19,6 MiB | 101 % | 0,0 s | Nur bündeln – kein Gewinn, aber maximal schnell und einfach prüfbar |
| tar + gzip -6 | 5,33 MiB | 27,4 % | 0,3 s | Der alte Standard: schnell, mäßige Kompression, überall lesbar |
| tar + gzip -9 | 5,28 MiB | 27,2 % | 0,9 s | Für rund 1 % kleinere Datei die dreifache Zeit – fast nie sinnvoll |
| tar + bzip2 -1 | 4,89 MiB | 25,1 % | 0,9 s | Schnellstes bzip2 schlägt gzip -9 deutlich, kostet aber Zeit |
| tar + bzip2 -9 | 4,52 MiB | 23,2 % | 1,1 s | Gute Quote, langsames Entpacken – siehe unten |
| tar + xz -6 | 4,19 MiB | 21,6 % | 3,6 s | Der Klassiker für Verteilung: klein, akzeptable Laufzeit |
| tar + xz -9e -T0 | 4,07 MiB | 20,9 % | 6,0 s | Kleinstes Ergebnis der Messung, dafür am langsamsten beim Erzeugen |
| tar + zstd -3 | 4,97 MiB | 25,6 % | unter 0,1 s | Schlägt gzip in Größe und Zeit gleichzeitig – der Grund für seinen Siegeszug |
| tar + zstd -19 -T0 | 4,25 MiB | 21,8 % | 4,7 s | Auf xz-Niveau, dabei viel schneller und mit Multithreading |
| tar + zstd -19 --long=27 | 4,25 MiB | 21,8 % | 5,1 s | Kein Gewinn hier: das große Fenster hilft erst bei deutlich größeren Einzeldateien |
| tar + lz4 -9 | 5,91 MiB | 30,4 % | 0,1 s | Schwächste Quote, dafür extrem schnell – für Zwischenpuffer, nicht für Backups |
| tar + brotli -q11 | 4,18 MiB | 21,5 % | 19,7 s | Gute Quote, aber für Archive viel zu langsam – brotli gehört ins Web, nicht ins Backup |
| 7z LZMA2 -mx5 | 4,20 MiB | 21,6 % | 1,2 s | Das beste Verhältnis der Messung: xz-Größe in einem Drittel der Zeit |
| 7z LZMA2 -mx9 | 4,09 MiB | 21,0 % | 1,9 s | Gesamtsieger bei der Größe, dazu Rechte, Symlinks und Verschlüsselung im Container |
| 7z als ZIP (-mx7) | 5,36 MiB | 27,5 % | 1,2 s | Beweis, dass die Quote am Verfahren hängt: gleiches Programm, deflate statt LZMA2 |
tar --zstd als Standard, xz -9e nur für
Dinge, die einmal gepackt und tausendmal heruntergeladen werden (Software, Quelltexte), 7z,
wenn Verschlüsselung oder Windows-Rechte mit ins Archiv sollen.
Entpacken und Verifizieren
Die Kompressionszeit ist nur die halbe Wahrheit – beim Entpacken zahlt man dauerhaft:
| Archiv | Entpackzeit | Bemerkung |
|---|---|---|
tar.gz (gzip -6) | unter 0,1 s | Sehr schnell – ein Grund für die Langlebigkeit des Formats |
tar.xz (xz -6) | 0,1 s | Deutlich schneller als das Erzeugen |
tar.zst (zstd -3) | unter 0,1 s | Bei Backups entscheidend: Wiederherstellen muss schnell gehen |
tar.lz4 | unter 0,1 s | Schnellstes Entpacken, schwächste Quote |
tar.bz2 (bzip2 -9) | 0,3 s | Langsamstes Entpacken – bzip2 kostet in beide Richtungen |
7z LZMA2 | 0,1 s | Unauffällig schnell, Prüfsummen inklusive |
Archive lassen sich mit einem Befehl prüfen, ohne sie auszupacken:
# Prüfsummen im Archiv testen
tar -tf backup.tar.zst > /dev/null # liest das Archiv komplett
gzip -t datei.gz && echo ok
bzip2 -t datei.bz2 && echo ok
xz -t datei.xz && echo ok
zstd -t datei.zst && echo ok
7z t backup.7z # 7-Zip testet Inhalte und Prüfsummen
unzip -t backup.zip # testet die CRC-Summen im ZIP
-t laufen lässt, findet den Fehler am selben Tag statt im Notfall.
tar richtig benutzen
Die Kurzschreibweise tar -czf ist kein Geheimwissen, sondern nur eine Abkürzung: c
für create, f für die Datei, davor das Verfahren – z für gzip, j für
bzip2, J für xz. Für zstd gibt es keinen Buchstaben, dafür --zstd oder die
allgemeine Form mit -I.
# Bündeln mit verschiedenen Verfahren
tar -cf backup.tar ordner/ # unkomprimiert
tar -czf backup.tar.gz ordner/ # gzip
tar -cjf backup.tar.bz2 ordner/ # bzip2
tar -cJf backup.tar.xz ordner/ # xz
tar --zstd -cf backup.tar.zst ordner/ # zstd (empfohlen)
tar -c -I 'zstd -19 -T0' -f backup.tar.zst ordner/ # zstd, hart und parallel
# Endung automatisch waehlen (-a), praktisch fuer Backups
tar -caf "backup-$(date +%F).tar.zst" ordner/
# Ansehen, ohne zu entpacken
tar -tvf backup.tar.zst | less # Liste mit Rechten und Groessen
tar -tf backup.tar.zst | wc -l # nur zaehlen
# Entpacken
tar -xf backup.tar.zst # ins aktuelle Verzeichnis
tar -xf backup.tar.zst -C /srv/wiederherstellung
tar -xf backup.tar.zst --one-top-level=neu # alles in einen neuen Ordner
tar -xf backup.tar.zst ordner/pfad/datei.txt # ein einzelnes Mitglied
# Rechte und Besitzer
sudo tar --numeric-owner -xpf backup.tar.zst # IDs statt Namen, Rechte erhalten
sudo tar -xf backup.tar.zst --same-owner # Besitzverhaeltnisse uebernehmen
# Ausnahmen beim Erzeugen
tar --zstd -cf backup.tar.zst \
--exclude='./cache/*' --exclude='./tmp/*' \
--exclude-from=/root/backup-ausnahmen.txt \
-C / daten ordner
| Option | Wirkung | Wann wichtig |
|---|---|---|
-a | Verfahren aus der Dateiendung ableiten | Wenn Skripte die Endung selbst bauen |
--exclude-from | Ausnahmeliste aus Datei lesen | Backups: Caches, Sockets, node_modules, Container-Volumes |
-C | Vor dem Arbeiten Verzeichnis wechseln | Relative Pfade im Archiv erzwingen – verhindert absolute Pfade |
--one-top-level | Alle Mitglieder in einen neuen Ordner entpacken | Wenn du nicht weißt, wo das Archiv seine Dateien abwirft |
--numeric-owner | UID/GID statt Namen speichern | Wiederherstellung auf Systemen mit anderen Benutzernamen |
--strip-components=1 | Führende Pfadteile beim Entpacken entfernen | Archiv mit Oberordner in ein bestehendes Verzeichnis entpacken |
--checkpoint | Fortschrittsmeldungen bei großen Archiven | Backups mit mehreren hundert GB |
-C in ein leeres Verzeichnis arbeiten. Wer tar -xf im / oder im
Home-Verzeichnis ausführt, versteht sekundenlang nicht, warum plötzlich Dateien verschwunden wirken.
zip und unzip
ZIP ist das Format für den Austausch: Jedes Betriebssystem öffnet es ohne Zusatzsoftware. Der Preis: Es speichert standardmäßig keine Unix-Rechte und keine symbolischen Verknüpfungen, und die Kompression ist auf dem Niveau von gzip.
# Pakete unter Debian 13 nachinstallieren
sudo apt install zip unzip
# Erzeugen
zip -r backup.zip ordner/ # rekursiv
zip -9 -r backup.zip ordner/ # maximale Kompression
zip -r backup.zip ordner/ -x '*/cache/*' # Ausschluesse
zip -r backup.zip ordner/ -y # Symlinks als Symlinks speichern
zip -s 2g -r gross.zip ordner/ # in 2-GB-Haeppchen aufteilen
# Ansehen und entpacken
unzip -l backup.zip # Inhaltsverzeichnis
unzip -t backup.zip # Pruefsummen testen
unzip backup.zip -d /ziel # in ein Zielverzeichnis
unzip -n backup.zip # nichts ueberschreiben
unzip -o backup.zip # ohne Rueckfrage ueberschreiben
unzip backup.zip 'ordner/unterordner/*' # gezielt einzelne Pfade
Ümläute &
Sonderzeichen (Test).txt und straße-äöü.txt lief sauber durch: Erzeugung mit 7-Zip,
Anzeige und Entpacken mit unzip 6.00 haben die Namen korrekt dargestellt. Problematisch sind
Archive aus alten Windows-Programmen, die Zeichensätze ohne Kennzeichnung speichern. Debian's unzip kennt
dafür die Option -O CHARSET (etwa unzip -O CP850 archiv.zip); wenn das nicht
hilft, ist 7z x archiv.zip meist die robustere Wahl.
zip -e? Lass es. Das ist ZipCrypto – ein Verfahren aus
den Achtzigern, für das es Werkzeuge gibt, die Passwörter in Sekunden prüfen. Wenn es verschlüsseltes ZIP
sein muss, erzeuge es mit AES-256 über 7-Zip (siehe Abschnitt Verschlüsselung) – und
beachte dabei die Einschränkung, die ich weiter unten gemessen habe.
bzip2: der Klassiker auf dem Abstellgleis
bzip2 war lange die Antwort auf „kleiner als gzip, ohne so langsam wie xz zu sein“. Diese Nische ist geschlossen: In meiner Messung war bzip2 -9 größer als zstd -19 und dabei beim Entpacken der langsamste Kandidat überhaupt.
sudo apt install bzip2
bzip2 -9 datei.log # erzeugt datei.log.bz2 und loescht das Original
bzip2 -k -9 datei.log # Original behalten (-k = keep)
bunzip2 datei.log.bz2 # entpacken (alternativ: bzip2 -d)
bzip2 -t datei.log.bz2 # Integritaet pruefen
# Mit tar
tar -cjf archiv.tar.bz2 ordner/
tar -xjf archiv.tar.bz2
# Parallel-Variante, falls installiert
sudo apt install pbzip2
tar -c -I pbzip2 -f archiv.tar.bz2 ordner/
.tar.bz2. Entpacken musst du es also können – nur
erzeugen musst du es nicht mehr. Der Blockgrößen-Parameter (-1 bis
-9) bestimmt übrigens, wie viel Speicher das Entpacken braucht: 900 kB pro Blockstufe.
xz: der Kompressionskönig
xz (LZMA2) liefert die kleinsten Dateien – und bezahlt das mit Rechenzeit und Speicherbedarf beim Erzeugen. Für Verteilung und langfristige Ablage ist das oft der richtige Kompromiss, für ein tägliches Backup meist nicht.
sudo apt install xz-utils
xz -6 datei.img # Standardstufe
xz -9e datei.img # maximal, langsam ("e" = extreme)
xz -T0 -9 datei.img # alle Kerne nutzen
xz -k -6 datei.img # Original behalten
unxz datei.img.xz # entpacken
xz -t datei.img.xz # pruefen
xz -l backup.tar.xz # Info: Bloecke, Verhaeltnis, Speicherbedarf
# Mit tar inkl. Parallelitaet
tar -c -I 'xz -9e -T0' -f archiv.tar.xz ordner/
tar -xf archiv.tar.xz
| Detail | Bedeutung für die Praxis |
|---|---|
Stufen -0 bis -9 | Höhere Stufe = größeres Wörterbuch = bessere Quote und deutlich mehr Arbeitsspeicher beim Erzeugen |
| Entpacken ist billig | Beim Wiederherstellen fällt nur der Speicher für das Wörterbuch an, nicht die Rechenzeit des Erzeugens |
-T0 | Nutzt alle Kerne – ohne diese Option läuft xz einläufig, auch auf 32-Thread-Maschinen |
| Prüfsummen | CRC32, CRC64 oder SHA-256 wählbar – SHA-256 ist langsamer, aber stärker bei Bitfehlern |
Alte .lzma-Dateien | Dasselbe Verfahren im alten Einzelformat – unxz liest sie weiterhin |
zstd: der Alltagsstandard
Zstandard wurde genau für das Problem entworfen, an dem gzip und xz scheitern: gute Kompression bei
Geschwindigkeiten, die man auch bei täglichen Backups akzeptiert. In meiner Messung war
zstd -3 in unter einer Zehntelsekunde fertig und dabei kleiner als gzip -9 – bei
einem Drittel von dessen Laufzeit.
sudo apt install zstd
zstd datei.log # Standardstufe 3, erzeugt datei.log.zst
zstd -19 -T0 datei.log # hart und parallel
zstd --ultra -22 datei.log # nochmal kleiner, deutlich langsamer
zstd -d datei.log.zst # entpacken
zstd -t datei.log.zst # pruefen
zstd --long=27 -19 gross.img # grosses Fenster fuer sehr grosse Dateien
zstd -l datei.log.zst # Info zur Datei
# Mit tar
tar --zstd -cf archiv.tar.zst ordner/
tar -xf archiv.tar.zst # Extraktion erkennt zstd automatisch
| Warum zstd heute Standard ist | Konkret |
|---|---|
| Multithreading eingebaut | -T0 beschleunigt große Datenmengen ohne Zusatzprogramm – kein pigz, kein pixz nötig |
Stufen bis 19, mit --ultra bis 22 | Du kannst dieselbe Datei für schnelle Backups oder maximale Ablage optimieren |
| Schnelles Entpacken | Wiederherstellen ist deutlich schneller als bei xz |
| Überall angekommen | Debian-Pakete, Kernel, Container-Images und ZFS nutzen es – die Werkzeuge sind also ohnehin installiert |
| Wörterbücher | Für sehr viele kleine Dateien (etwa Logstapel) extrem wirksam, aber ein eigenes Thema |
tar -c -I 'zstd -19 -T0' -f backup-$(date +%F).tar.zst -C /verzeichnis . – harte Kompression,
alle Kerne, Endung mit Datum. Für tägliche Läufe tut es auch --zstd (Stufe 3) und ist zehnmal
schneller.
7z: Container mit allem drin
7-Zip ist in meiner Messung der Kandidat mit dem besten Rundumpaket: fast xz-Quote, aber in einem Drittel der Zeit – dazu Rechte, Symlinks, Verschlüsselung und Prüfsummen im selben Container.
sudo apt install 7zip # Paketname unter Debian 13 (auch: p7zip-full)
7z a backup.7z ordner/ # Standard: LZMA2
7z a -mx=9 backup.7z ordner/ # maximale Kompression
7z a -mmt=on -mx=9 backup.7z ordner/ # mehrere Threads
7z a -mx=0 backup.7z ordner/ # nur buendeln: Kopie mit Rechten, kein Byte kleiner
7z l backup.7z # Inhaltsverzeichnis
7z t backup.7z # testen
7z x backup.7z -o/ziel # entpacken (x = mit Pfaden)
7z x backup.7z -o/ziel ordner/pfad # nur einzelne Mitglieder
7z rn backup.7z alt neu # umbenennen im Archiv (ohne neu zu packen)
| Eigenschaft | Praxisnutzen |
|---|---|
| Container mit Metadaten | Unix-Rechte, Zeitstempel und Symlinks bleiben erhalten – anders als bei ZIP |
| Wählbares Verfahren | -t7z -m0=lzma2, -tzip, -tgzip, -tbzip2, -txz – ein Programm für alle gängigen Formate |
| Prüfsummen | Im Archiv mitgespeichert, 7z t prüft sie vollständig |
| Solid-Block | Standardmäßig werden Dateien zusammengefasst – kleinere Archive, aber Änderung einzelner Dateien teuer |
| RAR-Unterstützung | In der hier getesteten Version 26.02 lassen sich RAR-Archive entpacken – das Protokoll meldet entsprechende Codecs |
rar und unrar unter Debian
RAR ist das Format mit der umständlichsten Rechtslage: Der Packer ist nicht frei und nicht in Debian enthalten, der Entpacker darf aus lizenzrechtlichen Gründen nur begrenzt verteilt werden. Du wirst also fast immer eine RAR-Datei vorfinden, statt selbst eine zu erzeugen.
| Werkzeug | Paket | Was es kann |
|---|---|---|
unrar | unrar (non-free) | Vollständiges Entpacken inklusive aktueller RAR-Versionen – Lizenz nicht frei |
unrar-free | unrar-free (main) | Freie Alternative, historisch eingeschränkt (vor allem ältere RAR-Versionen) |
unar | unar | Unarchiver: freier Entpacker für viele Formate, arbeitet gut mit Zeichensätzen |
7z | 7zip | Entpackt RAR je nach Build – im Test mit Version 26.02 vorhanden |
rar | nicht in Debian | Nur direkt vom Hersteller; Debian liefert den Packer bewusst nicht mit |
# Freie Variante aus main
sudo apt install unrar-free
# Vollstaendiger Entpacker (non-free-firmware/non-free aktivieren)
sudo apt install unrar
unrar l backup.rar # Inhaltsverzeichnis
unrar t backup.rar # testen
unrar x backup.rar # entpacken mit Pfaden
# Alternative: 7z oder unar
7z x backup.rar
unar backup.rar
7z und
tar.zst sind kostenlos, prüfbar und auf jedem System verfügbar.
Verschlüsseln richtig gemacht
Kompression und Verschlüsselung sollte man in der richtigen Reihenfolge stapeln: erst komprimieren, dann verschlüsseln. Verschlüsselte Daten sind nicht mehr komprimierbar, weil sie keine Muster mehr enthalten – wer zuerst verschlüsselt, lässt die ganze Kompressionsersparnis liegen.
# 7z: AES-256, und mit -mhe=on auch die Dateinamen verschluesseln
7z a -p -mhe=on -mx=5 geheim.7z ordner/ # fragt nach dem Passwort
7z a -pGEHEIM -mhe=on -mx=5 geheim.7z ordner/ # Passwort direkt (landet in der History!)
# AES-verschluesseltes ZIP ueber 7-Zip erzeugen
7z a -tzip -mem=AES256 -pGEHEIM geheim.zip ordner/
# Alternative: tar + age (modern) oder gpg
tar --zstd -cf - ordner/ | age -p -o backup.tar.zst.age
tar --zstd -cf - ordner/ | gpg --symmetric --cipher-algo AES256 -o backup.tar.gz.gpg
| Behauptung | Ergebnis meines Tests |
|---|---|
| Passwort wird geprüft | Korrekt: 7z t mit richtigem Passwort läuft durch, mit falschem wird abgelehnt |
-mhe=on verbirgt die Dateinamen | Bestätigt: 7z l ohne Passwort bricht ab (Rückgabecode 255) – ohne -mhe sind die Namen sichtbar |
| AES-ZIP überall lesbar | Nein. Das klassische unzip scheitert mit „need PK compat. v5.1“ – AES-Verschlüsselung (Methode 99) kann es nicht. Dafür brauchst du 7-Zip oder Werkzeuge wie 7z/p7zip |
zip -e ist sicher | Nein: Das ist ZipCrypto, kein AES. Nutze es nicht für ernsthafte Daten |
7z a -pPASSWORT … landet in der
Shell-History (~/.bash_history) und ist für andere Prozesse sichtbar (ps). Nutze
-p ohne Wert, damit 7-Zip interaktiv fragt.
-p"$PASSWORT" aus einer nur für root lesbaren
Datei, mit dem Nachteil, dass das Passwort während der Laufzeit in der Prozessliste steht. Ein per Pipe
übergebenes Passwort nahm 7-Zip beim Erzeugen an, bei 7z t aber nicht – für
Prüfläufe also explizit -pPASSWORT mitgeben.
Praxisrezepte
Vier Beispiele, die im Serveralltag immer wiederkehren:
# 1) Vollbackup mit zstd, Ausnahmen und Pruefung danach
AUSNAHMEN=/root/backup-ausnahmen.txt # z. B. /proc, /sys, /var/cache/*
ZIEL=/srv/backup/root-$(date +%F).tar.zst
tar -c -I 'zstd -19 -T0' -f "$ZIEL" --exclude-from="$AUSNAHMEN" \
--one-file-system -C / . \
&& tar -tf "$ZIEL" > /dev/null \
&& echo "Backup ok: $(du -h "$ZIEL" | cut -f1)"
# 2) Logdateien platzsparend archivieren und das Original schuetzen
tar --zstd -cf "/srv/backup/logs-$(date +%F).tar.zst" -C /var/log \
--exclude='*.gz' --exclude='*.zst' .
find /var/log -type f -name '*.log' -size +100M -print # vorher pruefen, was gross ist
# 3) Viele kleine Dateien: erst buendeln, dann komprimieren (nicht umgekehrt)
tar -cf - /srv/daten | zstd -19 -T0 -o /srv/backup/daten.tar.zst
# 4) Grosses Image in Haeppchen, dazu passende Pruefsummen
xz -T0 -9 bild.img
split -b 2G -d bild.img.xz bild.img.xz.part-
sha256sum bild.img.xz.part-* > bild.img.xz.sha256
# 5) Verschluesselter 7z-Container: was die Stufe wirklich kostet
# -mx=0 nur kopieren - schnell, aber kein Byte kleiner (sinnvoll bei
# bereits komprimierten Daten wie VM-Images, .tar.gz oder Medien)
# -mx=1 der Kompromiss fuer den Serveralltag
# -mx=5 wenn das Archiv lange liegt und Platz zaehlt
# -mhe=on verschluesselt auch die Dateinamen, -p fragt interaktiv nach dem Passwort
sudo 7z a -t7z -mx=1 -mmt=on -ms=off -mhe=on -p "backup-$(date +%F).7z" daten/
# Gemessen auf einem 19,4-MiB-Korpus (Text, Binaerdateien, Zufallsdaten):
# -mx=0 -> 19,45 MiB in 0,01 s -mx=1 -> 4,82 MiB in 0,23 s
# -mx=5 -> 4,63 MiB in 1,06 s -mx=9 -> 4,56 MiB in 1,86 s
# 6) Solid oder nicht: -ms=on kleiner, -ms=off zugaenglicher
7z a -mx=5 -mmt=on -ms=off app.7z daten/ # einzelne Dateien schnell herausziehen
7z a -mx=5 -mmt=on app-solid.7z daten/ # kleiner, aber Zugriff kostet Zeit
# 7) Verschluesselter Stream: erst komprimieren, dann verschluesseln
tar -c -I "zstd -19 -T0" daten/ | age -p -o "backup-$(date +%F).tar.zst.age"
# Ohne age, dasselbe mit gpg
tar -c -I "zstd -19 -T0" daten/ \
| gpg --symmetric --cipher-algo AES256 --output "backup-$(date +%F).tar.zst.gpg"
# Wiederherstellen in einem Zug - entschluesseln und direkt entpacken.
# Achtung: aus einer Pipe erkennt tar zstd NICHT selbst, "--zstd" muss mit.
age -d "backup-2026-09-21.tar.zst.age" | tar --zstd -xf - -C /srv/wiederherstellung
gpg -d "backup-2026-09-21.tar.zst.gpg" | tar --zstd -xf - -C /srv/wiederherstellung
--exclude=./cache/* zeigt: Die Dateien im Ordner verschwinden, der leere Ordner
bleibt im Archiv. Wer den Ordner komplett weglassen will, nimmt ./cache ohne
/* in die Ausnahmeliste auf – sonst schleppst du in jedem Backup leere Verzeichnisgerüste mit.
| Situation | Empfehlung | Warum |
|---|---|---|
| Tägliches Backup eines Servers | tar --zstd oder zstd -19 -T0 | Schnell genug für Nachtfenster, schnelles Wiederherstellen |
| Software oder Quelltext veröffentlichen | tar.xz mit -9e | Wird einmal gepackt und tausendmal geladen – kleine Datei zählt |
| Daten an Windows weitergeben | zip | Öffnet sich dort ohne Zusatzsoftware |
| Archiv mit Rechten und Passwort | 7z mit AES-256 und -mhe=on | Kompression, Metadaten und Verschlüsselung in einem Schritt |
| Sehr große Dateien auf langsamer Platte | lz4 oder zstd -1 | Die Platte ist der Engpass, nicht die CPU |
| Logs für einen Tag | gzip | Jedes Werkzeug liest es, Geschwindigkeit wichtiger als Quote |
Typische Fehler
| Symptom | Ursache | Lösung |
|---|---|---|
| Archiv ist kaum kleiner als die Daten | Inhalt ist bereits komprimiert (JPEG, MP4, PDF mit Bildern, .tar.gz) | Prüfen: Zufallsdaten ließen sich in meinem Test überhaupt nicht verkleinern – bei Medien erwartet man 0–5 % |
Cannot open: No such file or directory beim Entpacken | Pfade im Archiv sind relativ zum Erzeugungsverzeichnis | tar -tf zeigt die echten Namen – oft steckt ein Oberordner davor |
| Rechte nach dem Entpacken „falsch“ | Ohne -p/--same-owner werden Rechte nur teilweise übernommen; UID/GID lösen sich in Namen auf | Als root mit -p --numeric-owner entpacken; bei ZIP ist das grundsätzlich nicht möglich |
| Symlinks sind plötzlich Dateien | ZIP ohne -y, oder Archiv auf einem Dateisystem ohne Symlink-Unterstützung entpackt | 7z oder tar verwenden, Zielsystem prüfen |
unzip: need PK compat. v5.1 (can do v4.6) | AES-verschlüsseltes ZIP | 7z x statt unzip – im Test blieb unzip bei zwei Dateien mit exakt dieser Meldung stehen |
| Speicher voll beim Entpacken | Archiv größer als gedacht, oder xz-Stufe braucht viel Wörterbuch-Speicher | df -h vor dem Entpacken; bei xz an Speicherbedarf denken (xz -l zeigt ihn) |
| Umlaute im ZIP zerschossen | Altes Windows-Programm ohne UTF-8-Kennzeichnung | unzip -O CP850 oder 7z x |
| Fortschritt nicht sichtbar | Kompressoren schreiben nichts während der Arbeit | --checkpoint bei tar, pv dazwischen, oder -v für Dateilisten |
tar: Archiv ist komprimiert. Benutzen Sie die Option --zstd. | Entpacken aus einer Pipe – etwa aus einem gerade entschlüsselten Stream. Aus Dateien erkennt tar zstd selbst, aus der Pipe nicht | tar --zstd -xf - statt tar -xf -. Bei gzip, bzip2 und xz greift die Erkennung dagegen auch in der Pipe |
Fremde Archive entpacken
Ein Archiv kann Dateien außerhalb des Zielordners anlegen. GNU tar wehrt sich in der aktuellen Version recht gut – das habe ich überprüft:
| Angriff | Verhalten von GNU tar 1.35 im Test |
|---|---|
| Archiv mit absolutem Pfad | Beim Entpacken werden führende / entfernt (Meldung: „Entferne führende / von Elementnamen“) – die Datei landet relativ im Zielordner |
Archiv mit ../-Pfaden | Wird abgewiesen: „Elementname enthält ‚..‘“ – die Datei landete nicht außerhalb des Zielverzeichnisses |
Das ist eine Absicherung, keine Freigabe – die Regeln bleiben:
# 1) Immer erst schauen, was drin ist
tar -tf fremd.tar.zst | head -50
unzip -l fremd.zip
7z l fremd.7z
# 2) Nie als root in ein bestehendes Verzeichnis entpacken
mkdir /tmp/pruefen && tar -xf fremd.tar.zst -C /tmp/pruefen
# 3) Bei Unsicherheit lieber ohne Besitzerwechsel und ohne Rechte-Uebernahme
tar -xf fremd.tar.zst --no-same-owner -C /tmp/pruefen
.bashrc, eine manipulierte authorized_keys
oder ein ausführbares Skript mitbringen. Und es gibt Werkzeuge (etwa bsdtar oder ältere
Versionen), die sich anders verhalten als GNU tar. Die sichere Reihenfolge bleibt: auflisten, in ein
eigenes Verzeichnis entpacken, hinsehen – erst dann verschieben.
Was nehme ich wofür?
| Ziel | Erste Wahl | Zweite Wahl | Nicht sinnvoll |
|---|---|---|---|
| Backup auf dem eigenen Server | tar --zstd | 7z -mx=5 | gzip -9, lz4 |
| Kleinste Datei zum Verteilen | tar.xz -9e | 7z -mx=9 | brotli (zu langsam) |
| Austausch mit Windows | zip | 7z (Windows braucht 7-Zip) | tar.zst |
| Verschlüsseltes Einzelarchiv | 7z mit AES-256 + -mhe=on | tar + age | zip -e |
Fremde .rar-Datei | unrar | 7z, unar | selbst RAR erzeugen |
| Logs täglich rotieren | gzip | zstd -3 | xz -9e |
| Transfer über langsame Leitung erzeugen | zstd -1 | lz4 | xz -9 |
tar --zstd -cf archiv.tar.zst ordner/ –
schnell genug für den Alltag, klein genug für die Ablage, überall auf modernen Systemen lesbar. Und
anschließend mit tar -tf archiv.tar.zst prüfen, dass es auch wirklich lesbar ist.
Häufige Fragen (FAQ)
| Frage | Antwort |
|---|---|
| Kann tar auch komprimieren? | Nur indirekt: Es ruft ein Kompressionsprogramm auf. Die Option steuert nur, welches – tar selbst kennt keine Kompression. |
Warum kein zip für Backups? | Weil es Rechte und Symlinks nicht zuverlässig speichert und die Kompression auf gzip-Niveau liegt. Für Systembackups fehlen dir nach dem Wiederherstellen die Berechtigungen. |
Ist zstd immer besser als xz? | Nein: xz ist in der Größe meist etwas besser. Der Vorteil von zstd liegt in Geschwindigkeit, Parallelität und schnellem Entpacken. |
| Welche Stufe soll ich nehmen? | Für Backups zstd -19 -T0 oder Standardstufe 3, für Veröffentlichungen xz -9e. Stufen dazwischen sind selten ein sinnvoller Kompromiss. |
Kann ich ein .tar.gz in .tar.zst umwandeln? | Ja, über den Stream – ohne die Dateien einzeln zu entpacken: zcat alt.tar.gz | zstd -19 -T0 -o neu.tar.zst. Beides sind Streams, deshalb bleibt die Archivstruktur dabei erhalten. |
Was ist mit pigz, pbzip2, pixz? | Parallelvarianten der Klassiker. Sinnvoll bei alten Formaten; bei zstd und 7z ist die Parallelität schon eingebaut. |
| Komprimieren ISO-Dateien sinnvoll? | Kaum: Ein ISO enthält meist bereits komprimierte Pakete. Der Gewinn liegt typischerweise im niedrigen einstelligen Prozentbereich. |
| Welche Pakete brauche ich überhaupt? | tar, gzip und zstd sind immer vorhanden. Dazu je nach Bedarf xz-utils, bzip2, zip unzip, 7zip und unrar-free. |
Fazit
Die Formatfrage ist mit einer Messung schnell entschieden: zstd ist der neue Alltagsstandard, weil es gzip in Größe und Zeit schlägt und dabei wieder schnell entpackt. xz bleibt die Wahl für alles, was einmal gepackt und oft geladen wird. 7z ist der beste Kompromiss, wenn Metadaten und Verschlüsselung mit ins Archiv sollen. zip bleibt für den Austausch, weil es jedes System öffnet. Und bzip2 musst du nur noch lesen können, nicht mehr schreiben.
Wichtiger als die Wahl des Verfahrens sind drei Gewohnheiten: Backups nach dem Schreiben prüfen, Archive in ein eigenes leeres Verzeichnis entpacken, und Passwörter niemals direkt auf die Kommandozeile schreiben.
tar bündelt, der Rest komprimiert – deshalb ist die Verfahrenswahl austauschbar.
② zstd ist Standard, xz -9e für Veröffentlichungen, zip für Windows.
③ Die letzten Prozentpunkte Größe kosten ein Vielfaches an Zeit – und meist lohnt sich das nicht.
④ Verschlüsselung heißt AES-256 (7z oder age), nicht zip -e – und AES-ZIPs kann unzip nicht öffnen.
⑤ Kein Archiv ohne Prüfung: -t nach dem Erzeugen, -tf vor dem Entpacken.