XZ Utils - XZ Utils
Původní autoři | Lasse Collin |
---|---|
Vývojáři | Projekt Tukaani |
Stabilní uvolnění | 5.2.5 / 17. března 2020[1] |
Úložiště | ![]() |
Napsáno | C |
Operační systém | Cross-platform |
Typ | Komprese dat |
Licence | Veřejná doména.[2] (ale viz podrobnosti v Vývoj a přijetí ) |
webová stránka | tukaani |
XZ Utils (dříve LZMA Utils) je sada svobodný software příkazový řádek bezztrátové kompresory dat, počítaje v to lzma a xz, pro Unixový operační systémy a od verze 5.0 Microsoft Windows.
xz dosahuje vyšších rychlostí komprese než podobné alternativy gzip a bzip2. Rychlost dekomprese je rychlejší než bzip2, ale pomalejší než gzip. Komprese může být mnohem pomalejší než gzip a pro vyšší úrovně komprese je pomalejší než bzip2 a je nejužitečnější, když bude komprimovaný soubor použit mnohokrát.[3][4]
XZ Utils se skládá ze dvou hlavních komponent:
- xz, kompresor a dekompresor příkazového řádku (analogicky k gzip )
- liblzma, a softwarová knihovna s API podobný zlib
Existují různé příkazové zkratky, například lzma (pro xz --format = lzma), unxz (pro xz - dekomprimovat; analogicky k gunzip ) a xzcat (pro unxz --stdout; analogicky k zcat )
XZ Utils dokáže oba komprimovat a dekomprimovat xz a lzma formáty souborů, ale protože nyní existuje formát LZMA dědictví,[5] XZ Utils standardně komprimuje na xz.
Implementace
Chování softwaru i vlastnosti formátu souboru byly navrženy tak, aby fungovaly podobně jako u populárních nástrojů pro komprimaci Unixu. gzip a bzip2. Skládá se z unixového portu Igor Pavlov LZMA-SDK který byl upraven tak, aby bezproblémově zapadl do prostředí Unixu a jejich obvyklé struktury a chování.
xz podporuje vícevláknovou kompresi (-T
vlajka)[6] od roku 2014, verze 5.2.0. [7], od roku 2019 dosud nebyla implementována dekomprese se závitem. [8]. Počet vláken může být menší, než je definováno, pokud soubor není dostatečně velký pro vlákna s daným nastavením nebo pokud by použití více vláken překročilo limit využití paměti. [9]
Stejně jako gzip a bzip, i xz a lzma mohou jako vstup komprimovat pouze jednotlivé soubory (nebo datové toky). Nemohou spojit více souborů do jednoho archiv - k tomu se nejprve použije archivační program, například dehet.
Komprese archivu:
xz my_archive.tar # výsledky v my_archive.tar.xzlzma my_archive.tar # výsledky v my_archive.tar.lzma
Dekomprese archivu:
unxz my_archive.tar.xz # výsledky v my_archive.tarunlzma my_archive.tar.lzma # výsledky v my_archive.tar
Verze 1.22 nebo vyšší z GNU implementace tar má transparentní podporu pro tarbally komprimované pomocí lzma a xz pomocí spínače --xz
nebo -J
pro kompresi xz a --lzma
pro kompresi LZMA.
Vytvoření archivu a jeho komprese:
tar -c --xz -f my_archive.tar.xz / some_directory # má za následek my_archive.tar.xztar -c --lzma -f my_archive.tar.lzma / some_directory # má za následek my_archive.tar.lzma
Dekomprese archivu a extrahování jeho obsahu:
tar -x --xz -f my_archive.tar.xz # výsledky v / some_directorytar -x --lzma -f my_archive.tar.lzma # výsledky v / some_directory
Jednopísmenný příklad tar pro archiv s kompresí a dekompresi s použitím extraktu krátká přípona
tar cJf keep.txz keep # archive poté zkomprimujte adresář ./keep/ do souboru ./keep.txztar xJf keep.txz # dekomprimujte a poté extrahujte soubor ./keep.txz vytvořením adresáře ./keep/
Formát xz
Formát xz se na lzma vylepšuje tím, že umožňuje filtry pro předzpracování. Přesné použité filtry jsou podobné těm, které jsou použity v 7z, jelikož filtry 7z jsou k dispozici ve veřejné doméně prostřednictvím LZMA SDK.
Vývoj a přijetí
Vývoj XZ Utils probíhal v rámci projektu Tukaani, který vedl Mike Kezner, malou skupinou vývojářů, kteří kdysi udržovali Linuxová distribuce na základě Slackware.
Všechny zdrojový kód pro xz a liblzma byl propuštěn do veřejná doména. Distribuce zdroje XZ Utils navíc obsahuje některé volitelné skripty a ukázkový program, který podléhá různým verzím GPL.[2]
Konkrétně úplný seznam GPL skripty a zdroje distribuované pomocí softwaru XZ Utils zahrnují:
- Volitelná implementace společné funkce libc, getopt (GNU GPL v2 a GNU LGPL v2.1 )
- Skript m4 pro detekci pthread (GNU GPL v3 )
- Některé nepodstatné obalové skripty (xzgrep atd.) (GNU GPL v2 )
- A ukázkový program scanlzma, který není integrován do systému sestavení
Výsledné binární soubory softwaru xz a liblzma jsou public domain, pokud není volitelná LGPL getopt implementace je začleněna.[10]
Binární soubory jsou k dispozici pro FreeBSD, Linux systémy, Microsoft Windows, a FreeDOS. Počet Linuxové distribuce, počítaje v to Fedora, Slackware, Ubuntu, a Debian používají xz ke kompresi svých softwarových balíčků. Arch Linux dříve použitý xz ke kompresi balíčků,[11] ale k 27. prosinci 2019 jsou balíčky komprimovány pomocí Zstandard komprese.[12] The GNU Archiv FTP také používá xz.
Viz také
Reference
- ^ „Poznámky k verzi XZ Utils“. [git repo]. Lasse Collin. 2020-03-17. Citováno 2020-03-30.
- ^ A b Licencování na tukaani.org „Nejzajímavější části XZ Utils (např. Liblzma) jsou ve veřejné doméně. S částmi ve veřejné doméně můžete dělat, co chcete. Některé části XZ Utils (např. Systém sestavení a některé nástroje) podléhají různým svobodným softwarovým licencím, například jako GNU LGPLv2.1, GNU GPLv2 nebo GNU GPLv3. "
- ^ Henry-Stocker, Sandra (12. 12. 2017). „Jak z komprese souborů Linuxu vytěžit maximum“. Síťový svět. Citováno 2020-02-09.
- ^ „Porovnání výkonu Gzip vs Bzip2 vs XZ“. RootUsers. 2015-09-16. Citováno 2020-02-09.
- ^ LZMA Utils, vyvoláno 2011-01-25
- ^ https://man.cx/xz
- ^ https://git.tukaani.org/?p=xz.git;a=blob;f=NEWS;hb=HEAD
- ^ https://man.cx/xz
- ^ https://man.cx/xz
- ^ „V jakých případech se na GPL vztahuje také výstup programu GPL?“. GNU.org. Citováno 21. srpna 2019.
- ^ Pierre Schmitz (23.03.2010). „Novinky: Přechod na kompresi xz pro nové balíčky“.
- ^ „Arch Linux - Novinky: Nyní používáme pro kompresi balíků místo xz Zstandard“. www.archlinux.org. Citováno 2020-01-07.