Porady Admina: xz-utils
Ostatnia aktualizacja: 27 czerwca 2024, 10:07
W kolejnym wpisie z cyklu Porady Admina zajmiemy się narzędziem xz-utils.
XZ Utils (wcześniej LZMA Utils) to zestaw oprogramowania do bezstratnej kompresji, który zawiera programy lzma i xz, dla systemów operacyjnych typu Unix oraz, od wersji 5.0 i nowszych, dla systemu Microsoft Windows. Do kompresji/dekompresji stosuje się algorytm łańcuchowy Lempela – Ziva – Markowa (LZMA). XZ Utils powstał jako uniksowy port pakietu LZMA-SDK Igora Pawłowa, który został dostosowany tak, aby bezproblemowo pasował do środowisk uniksowych oraz ich zwykłej struktury i zachowania.
Natywny format xz to .xz, ale może również obsługiwać inne formaty kompresji lub dekompresji plików. xz daje pełną kontrolę nad kompresją i dekompresją plików. W systemie Linux narzędzie xz jest domyślnie dostarczane z systemem, którego nie trzeba instalować.
Pakiet dostarcza narzędzia wiersza poleceń do pracy z mechanizmem kompresji XZ, włączając w to: xz, unxz, xzcat, xzgrep, itd. Potrafią one również obsługiwać starszy format LZMA oraz, jeśli zawierają właściwe dowiązania symboliczne, mogą emulować zachowanie poleceń pakietu lzma.
Format XZ jest podobny do starszego formatu LZMA, jednakże zawiera pewne ulepszenia.
Składnia
xz [opcja] [plik]
Opcje
-z, –compress : wymuszenie kompresji
-d, –decompress : wymuszenie dekompresji
-t, –test : sprawdzenie spójności plików skompresowanych
-l, –list : wypisanie informacji o plikach .xz
-k, –keep : zachowanie (nieusuwanie) plików wejściowych
-f, –force : nadpisywanie plików wyjściowych i (de)kompresja dowiązań
-c, –stdout : zapis na standardowe wyjście, nieusuwanie plików wej.
-0 … -9 : predefiniowane opcje kompresji; domyślna to 6; przed użyciem wartości 7-9 należy wziąć pod uwagę wykorzystanie pamięci przy kompresji *oraz* dekompresji!
-e, –extreme : próba poprawy współczynnika kompresji z użyciem większej ilości czasu procesora; nie wpływa na wymagania pamięciowe dekompresora
-T, –threads=ILE : użycie maksymalnie ILU wątków; domyślnie 1; 0 oznacza tyle, ile jest rdzeni procesorów
-q, –quiet : pominięcie ostrzeżeń; dwukrotne podanie pomija też błędy
-v, –verbose : więcej informacji; dwukrotne podanie to jeszcze więcej
-h, –help : wyświetlenie tego krótkiego opisu i zakończenie
-H, –long-help : wyświetlenie długiego opisu (także opcje zaawansowane)
-V, –version : wyświetlenie informacji o wersji i zakończenie
Aliasy/Skróty
unxz jest odpowiednikiem xz –decompress.
xzcat jest odpowiednikiem xz –decompress –stdout.
lzma jest odpowiednikiem xz –format=lzma.
unlzma jest odpowiednikiem xz –format=lzma –decompress.
lzcat jest odpowiednikiem xz –format=lzma –decompress –stdout
Przykłady
Zarówno zachowanie oprogramowania, jak i właściwości formatu pliku zostały zaprojektowane tak, aby działać podobnie do popularnych narzędzi do kompresji uniksowej gzip i bzip2.
Podobnie jak gzip i bzip, xz i lzma mogą kompresować tylko pojedyncze pliki (lub strumienie danych) jako dane wejściowe. Nie mogą łączyć wielu plików w jedno archiwum – w tym celu najpierw używany jest program archiwizujący, taki jak tar.
Kompresowanie pliku
xz plik1
lub
xz -z plik1
Kompresowanie archiwum tar
xz moje-archiwum.tar
Tworzenie archiwum i jego kompresja
tar -c --xz -f moje-archiwum.tar.xz katalog1
Możemy skompresować plik w formacie xz bez usuwania oryginalnego pliku, używając opcji -k
xz -k plik1
Możemy kontrolować rozmiar kompresji pliku za pomocą xz., który zapewnia opcje poziomu kompresji od 0 do 9, domyślna wartość poziomu kompresji to 6. 0 to szybki, ale mniej skompresowany plik. 9 jest wolniejszy, bardziej kompresuje plik i możemy użyć opcji –best dla poziomu 9.
xz -9 plik1
Możemy zmniejszyć zużycie pamięci za pomocą opcji –memlimit-compress
xz --memlimit-compress=10% plik1
Dekompresja archiwum
unxz moje-archiwum.tar.xz
lub
xz -d moje-archiwum.xz
Dekompresja archiwum i wyodrębnienie jego zawartości
tar -x --xz -f moje-archiwum.tar.xz
Więcej informacji o programie xz uzyskasz poleceniami:
man xz
xz --help