Musisz skompresować obraz dysku, zrzut SQL, eksport CSV lub surową kopię zapasową przed transferem. xz zazwyczaj zmniejsza rozmiar lepiej niż gzip, ale zużywa więcej procesora i może wymagać dużo pamięci przy wysokich poziomach.
Użyj xz do pojedynczego pliku, dużego i słabo skompresowanego. Unikaj go w przypadku zdjęcia JPEG, wideo MP4, archiwum .zip, paczki .deb lub pliku, którego nazwa już kończy się na .gz, .xz lub .zst.
Kroki poniżej obejmują tworzenie archiwum .xz, zachowanie pliku źródłowego, testowanie integralności, wybór poziomu kompresji i weryfikację zdalnej kopii.

Sprawdź, czy xz jest dostępne
Większość dystrybucji instaluję xz domyślnie za pomocą pakietu xz-utils lub xz. Sprawdź polecenie zanim dodasz je do procedury tworzenia kopii zapasowej.
xz --version
Na Debianie, Ubuntu i Linux Mint, zainstaluj pakiet, jeśli polecenie jest niedostępne.
sudo apt update
sudo apt install xz-utils
Na Fedorze, AlmaLinux lub Rocky Linux zainstaluj pakiet za pomocą dnf.
sudo dnf install xz
Wybierz xz, gzip lub zip
xz kompresuje pojedynczy plik za pomocą LZMA2. Nadaje się do zrzutu SQL, eksportu tekstu, niekompresowanego obrazu dysku, skonsolidowanego pliku dziennika lub już utworzonego archiwum .tar.
- Wybierz xz gdy oszczędność wielkości ma większe znaczenie niż prędkość.
- Wybierz gzip gdy chcesz szybkiej kompresji w skrypcie, potoku lub rotacji dzienników.
- Wybierz zip gdy musisz połączyć wiele plików w formacie łatwym do otwarcia w systemie Windows.
- Wybierz tar przed xz gdy musisz zachować strukturę katalogów Linuxa z jej katalogami, nazwami i uprawnieniami.
xz sam w sobie nie łączy wielu plików. Aby skompresować folder, najpierw utwórz archiwum tar, a następnie skompresuj je za pomocą xz.
tar -cf projekt.tar projekt/
xz -k projekt.tar
Polecenie tar może także bezpośrednio utworzyć projekt.tar.xz.
tar -cJf projekt.tar.xz projekt/
Sprawdź plik przed kompresją
Sprawdź typ i rozmiar pliku przed długą kompresją. Już skompresowany plik może zająć procesor przy niemal zerowym przyroście.
file kopia_zapasowa.sql
ls -lh kopia_zapasowa.sql
Jeśli file wskazuje gzip compressed data, XZ compressed data, Zip archive data, JPEG image data lub ISO Media, przetestuj najpierw na małej próbce.
Kompresuj zachowując oryginalny plik
Bez opcji, xz kopia_zapasowa.sql zastępuje kopia_zapasowa.sql przez kopia_zapasowa.sql.xz. Dodaj -k aby zachować oryginał podczas kontroli.
xz -k kopia_zapasowa.sql
Dodaj -v aby wyświetlić postęp, stosunek i przydatne informacje podczas wykonywania.
xz -k -v kopia_zapasowa.sql
Następnie sprawdź, czy oba pliki istnieją i porównaj ich rozmiar.
ls -lh kopia_zapasowa.sql kopia_zapasowa.sql.xz
Nie usuwaj oryginału ponieważ plik .xz istnieje. Przetestuj archiwum i potwierdź przywrócenie przed usunięciem.
Wybierz poziom kompresji
Domyślny poziom xz to -6. Często daje dobry stosunek, ale nie zawsze jest odpowiedni dla mało wydajnej maszyny lub nagłej restauracji.
- Użyj
-1do-3gdy prędkość ma znaczenie i maksymalne oszczędności nie są priorytetowe. - Trzymaj
-6dla ogólnego użytku na komfortowej maszynie. - Zarezerwuj
-7do-9dla dużych plików, które archiwizujesz rzadko i które również możesz dekompresować na odpowiednio wyposażonej maszynie.
xz -3 -k eksport.csv
xz -6 -k kopia_zapasowa.sql
xz -9 -k archiwum.img
Wysokie poziomy mogą zwiększać pamięć potrzebną do kompresji i dekompresji. Unikaj -9 dla archiwum, które będzie musiało być otwarte na małym VPS, starej maszynie lub minimalnym systemie zapasowym.
Ogranicz użycie CPU na serwerze
Opcja -T ustawia liczbę wątków. -T0 wykorzystuje wszystkie dostępne rdzenie, co może spowolnić bazę danych, serwer www lub aktywne kontenery.
xz -6 -T2 -k kopia_zapasowa.sql
Na maszynie produkcyjnej zacznij od -T1 lub -T2. Monitoruj obciążenie, a następnie zwiększaj tylko jeśli serwer pozostaje responsywny.
uptime
top
Dla zaplanowanej kompresji wykonaj ją poza godzinami szczytu i sprawdź wolne miejsce przed uruchomieniem. Opcja -k utrzymuje dwa pliki i wymaga więcej miejsca na dysku.
df -h .
Testuj integralność archiwum
Zawsze testuj archiwum za pomocą xz -t przed usunięciem oryginału lub zatwierdzeniem kopii zapasowej. Polecenie czyta i dekompresuje dane w pamięci bez tworzenia pliku wyjściowego.
xz -t kopia_zapasowa.sql.xz
echo $?
Kod powrotu 0 oznacza, że test xz zakończył się sukcesem. Inny kod sygnalizuje błąd i wymaga zachowania pliku źródłowego.
Następnie wyświetl metadane archiwum, aby sprawdzić nieskompresowany rozmiar, rozmiar skompresowany, stosunek i typ kontroli integralności.
xz -l kopia_zapasowa.sql.xz
xz -t sprawdza, czy archiwum może być odczytane. Nie dowodzi jednak, że zdalna kopia jest identyczna z plikiem lokalnym.
Sprawdź transfer z SHA-256
Oblicz odcisk SHA-256 przed transferem, skopiuj archiwum, a następnie ponownie oblicz odcisk na miejscu docelowym. Obie linie powinny pokazywać tę samą wartość.
sha256sum kopia_zapasowa.sql.xz
scp kopia_zapasowa.sql.xz admin@serwer:/srv/archives/
ssh admin@serwer 'sha256sum /srv/archives/kopia_zapasowa.sql.xz'
Zachowaj odcisk razem z archiwum, jeśli wysyłasz go na zewnętrzny dysk, pamięć obiektową lub inny serwer.
sha256sum kopia_zapasowa.sql.xz > kopia_zapasowa.sql.xz.sha256
Aby sprawdzić później z tego samego folderu, użyj pliku .sha256.
sha256sum -c kopia_zapasowa.sql.xz.sha256
Rozpakuj bez utraty archiwum
unxz kopia_zapasowa.sql.xz usuwa archiwum po ekstrakcji. Dodaj -k, aby zachować plik .xz, dopóki nie sprawdzisz przywróconej zawartości.
unxz -k kopia_zapasowa.sql.xz
ls -lh kopia_zapasowa.sql kopia_zapasowa.sql.xz
Ekwiwalentne polecenie z xz jest przydatne w skryptach, które już wywołują ten binarny plik.
xz -d -k kopia_zapasowa.sql.xz
Jeśli plik wyjściowy już istnieje, xz odmawia jego nadpisania bez -f. Nie wymuszaj ekstrakcji, zanim nie porównasz ścieżki, daty, rozmiaru i rzeczywistej potrzeby wymiany.
ls -lh kopia_zapasowa.sql kopia_zapasowa.sql.xz
stat kopia_zapasowa.sql
Aby zachować ostrożność, decomprymuj do osobnego folderu i porównaj uzyskany plik przed zastąpieniem pliku produkcyjnego.
mkdir -p /tmp/test-xz
cp kopia_zapasowa.sql.xz /tmp/test-xz/
cd /tmp/test-xz
unxz -k kopia_zapasowa.sql.xz
ls -lh kopia_zapasowa.sql
Odczytaj archiwum bez tworzenia pliku
Aby szybko sprawdzić skompresowany plik tekstowy, przekaż dekompresowaną zawartość do standardowego wyjścia za pomocą xzcat. Ta metoda unika pisania dużego pliku tymczasowego.
xzcat kopia_zapasowa.sql.xz | head -20
Aby szukać ciągu w skompresowanym pliku tekstowym, użyj xzgrep zamiast dekompresować całe archiwum.
xzgrep -n "CREATE TABLE" kopia_zapasowa.sql.xz
Nie używaj tych poleceń w przypadku poufnego zrzutu, jeśli Twój terminal rejestruje wyjście lub pracujesz w sesji współdzielonej.
Zalecana procedura tworzenia kopii zapasowej
- Sprawdź typ pliku za pomocą
filei jego rozmiar za pomocąls -lh. - Sprawdź dostępne miejsce za pomocą
df -h .przed użyciem-k. - Kompresuj z
xz -k -vi poziomem odpowiednim dla maszyny. - Ogranicz wątki za pomocą
-T1lub-T2na aktywnym serwerze. - Testuj archiwum za pomocą
xz -ti wymagaj kodu powrotu0. - Oblicz odcisk
sha256sumprzed i po każdym transferze. - Testuj ekstrakcję w osobnym folderze przed zastąpieniem ważnego pliku.
xz jest przydatne, gdy przestrzeń dyskowa lub przepustowość kosztują więcej niż czas CPU. Nie zastępuje strategii tworzenia kopii zapasowych, odcisku zachowanego z archiwum i testu przywrócenia przed incydentem.