U moet een schijfafbeelding, een SQL-dump, een CSV-export of een ruwe back-up comprimeren voor een overdracht. xz vermindert vaak beter de grootte dan gzip, maar het verbruikt meer CPU en kan veel geheugen vragen bij hogere niveaus.
Gebruik xz voor een enkel, groot en weinig gecomprimeerd bestand. Vermijd het voor een JPEG-afbeelding, een MP4-video, een .zip-archief, een .deb-pakket of een bestand waarvan de naam al eindigt op .gz, .xz of .zst.
De onderstaande stappen behandelen het maken van een .xz-archief, het behouden van het bronbestand, het testen van de integriteit, het kiezen van het compressieniveau en het verifiëren van een externe kopie.

Controleren of xz beschikbaar is
De meeste distributies installeren xz standaard via het pakket xz-utils of xz. Controleer de opdracht voordat u deze in een back-upprocedure integreert.
xz --version
Op Debian, Ubuntu en Linux Mint, installeert u het pakket als de opdracht ontbreekt.
sudo apt update
sudo apt install xz-utils
Op Fedora, AlmaLinux of Rocky Linux, installeert u het pakket met dnf.
sudo dnf install xz
Kies xz, gzip of zip
xz comprimeert een enkel bestand met LZMA2. Het is geschikt voor een SQL-dump, een tekstexport, een ongecomprimeerde schijfafbeelding, een gecompileerd logbestand of een al aangemaakt .tar-archief.
- Kies xz wanneer de opslagruimte meer telt dan de snelheid.
- Kies gzip wanneer u snelle compressie wilt in een script, pipeline of logrotatie.
- Kies zip wanneer u meerdere bestanden in een eenvoudig te openen formaat onder Windows wilt groeperen.
- Kies tar vóór xz wanneer u een Linux-bestandstructuur met mappen, namen en machtigingen moet behouden.
xz alleen groepeert geen meerdere bestanden. Om een map te comprimeren, maakt u eerst een tar-archief en comprimeert het dan met xz.
tar -cf project.tar project/
xz -k project.tar
De tar-opdracht kan ook direct project.tar.xz maken.
tar -cJf project.tar.xz project/
Controleer het bestand vóór compressie
Kijk naar het type en de grootte van het bestand voordat u een lange compressie uitvoert. Een bestand dat al gecomprimeerd is, kan de CPU in beslag nemen met een bijna nul winst.
file backup.sql
ls -lh backup.sql
Als file aangeeft gzip compressed data, XZ compressed data, Zip archive data, JPEG image data of ISO Media, test dan eerst een klein monster.
Comprimeer en behoud het bronbestand
Zonder optie, xz backup.sql vervangt backup.sql door backup.sql.xz. Voeg -k toe om het origineel te behouden tijdens de controles.
xz -k backup.sql
Voeg -v toe om de voortgang, de verhouding en nuttige informatie tijdens de uitvoering weer te geven.
xz -k -v backup.sql
Controleer daarna of beide bestanden bestaan en vergelijk hun grootte.
ls -lh backup.sql backup.sql.xz
Verwijder het origineel niet omdat het .xz-bestand bestaat. Test het archief en valideer de herstelprocedure vóór verwijdering.
Kies een compressieniveau
Het standaardniveau van xz is -6. Het geeft vaak een goede verhouding, maar het is niet altijd geschikt voor een minder krachtige machine of voor een dringende herstel.
- Gebruik
-1tot-3wanneer snelheid belangrijk is en maximale winst niet prioriteit heeft. - Houd
-6voor algemeen gebruik op een comfortabele machine. - Reserveer
-7tot-9voor grote bestanden die u zelden archiveert en die u ook kunt decomprimeren op een voldoende uitgeruste machine.
xz -3 -k export.csv
xz -6 -k backup.sql
xz -9 -k archive.img
Hogere niveaus kunnen het geheugen dat nodig is voor compressie en decompressie verhogen. Vermijd -9 voor een archief dat op een kleine VPS, een oude machine of een minimaal noodsysteem moet worden geopend.
Beperk het CPU-gebruik op een server
De optie -T regelt het aantal threads. -T0 gebruikt alle beschikbare cores, wat een database, een webserver of actieve containers kan vertragen.
xz -6 -T2 -k backup.sql
Op een productiemachine, begin met -T1 of -T2. Houd de belasting in de gaten en verhoog alleen als de server responsief blijft.
uptime
top
Voor een geplande compressie, voer deze uit buiten de piekuren en controleer de vrije ruimte vóór de lancering. De optie -k houdt twee bestanden en vraagt meer schijfruimte.
df -h .
Test de integriteit van het archief
Test altijd het archief met xz -t voordat u het origineel verwijdert of een back-up valideert. De opdracht leest en decomprimeert de gegevens in het geheugen zonder een uitvoerbestand te maken.
xz -t backup.sql.xz
echo $?
Een retourcode 0 geeft aan dat de xz-test succesvol is. Een andere code geeft een fout aan en vereist dat het bronbestand behouden blijft.
Geef daarna de metadata van het archief weer om de ongecomprimeerde grootte, de gecomprimeerde grootte, de verhouding en het type integriteitscontrole te controleren.
xz -l backup.sql.xz
xz -t controleert of het archief leesbaar is. Het bewijst niet dat een externe kopie identiek is aan het lokale bestand.
Controleer een overdracht met SHA-256
Bereken een SHA-256-hash vóór de overdracht, kopieer het archief en bereken vervolgens de hash opnieuw op de bestemming. Beide regels moeten dezelfde waarde tonen.
sha256sum backup.sql.xz
scp backup.sql.xz admin@server:/srv/archives/
ssh admin@server 'sha256sum /srv/archives/backup.sql.xz'
Bewaar de hash met het archief als het naar een externe schijf, objectopslag of een andere server gaat.
sha256sum backup.sql.xz > backup.sql.xz.sha256
Voor latere verificatie vanuit dezelfde map, gebruik het .sha256-bestand.
sha256sum -c backup.sql.xz.sha256
Decompressie zonder het archief te verliezen
unxz backup.sql.xz verwijdert het archief na extractie. Voeg -k toe om het .xz-bestand te behouden totdat u de herstelde inhoud hebt gecontroleerd.
unxz -k backup.sql.xz
ls -lh backup.sql backup.sql.xz
Het equivalente commando met xz is nuttig in scripts die deze binaire al aanroepen.
xz -d -k backup.sql.xz
Als het uitvoerbestand al bestaat, weigert xz het te overschrijven zonder -f. Forceer de extractie niet voordat u het pad, de datum, de grootte en de echte vervangingsbehoefte heeft vergeleken.
ls -lh backup.sql backup.sql.xz
stat backup.sql
Voor een voorzichtige herstel, decompressie in een aparte map en vergelijk het verkregen bestand voordat u een productiebestand vervangt.
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
Lees een archief zonder een bestand te creëren
Om snel een gecomprimeerd tekstbestand te inspecteren, stuur de gedecomprimeerde inhoud naar de standaarduitvoer met xzcat. Deze methode voorkomt het schrijven van een groot tijdelijk bestand.
xzcat backup.sql.xz | head -20
Om een tekenreeks in een gecomprimeerd tekstbestand te zoeken, gebruikt u xzgrep in plaats van de hele archief te decomprimeren.
xzgrep -n "CREATE TABLE" backup.sql.xz
Gebruik deze opdrachten niet op een vertrouwelijke dump als uw terminal de uitvoer logt of als u in een gedeelde sessie werkt.
Aanbevolen procedure voor een back-up
- Controleer het type bestand met
fileen de grootte metls -lh. - Controleer de beschikbare ruimte met
df -h .voordat u-kgebruikt. - Comprimeer met
xz -k -ven een niveau dat geschikt is voor de machine. - Beperk threads met
-T1of-T2op een actieve server. - Test het archief met
xz -ten eis een retourcode van0. - Bereken een
sha256sumhash vóór en na elke overdracht. - Test de extractie in een aparte map voordat u een belangrijk bestand vervangt.
xz is nuttig wanneer schijfruimte of bandbreedte duurder is dan CPU-tijd. Het vervangt geen back-upstrategie, een hash die bij het archief is bewaard en een hersteltest die vóór incidenten is uitgevoerd.