Chci zkomprimovat několik obrázků do archivu .xz. Jak to udělám?
Přijatá odpověď:
Ačkoli tar cJf archive files...
jak podrobně popisuje Zacharee1 a heemayl, obvykle budete chtít udělat, dalším způsobem je nasměrovat data tarred do xz
příkaz:
tar c files... | xz > archive.tar.xz
Od tar
Ubuntu podporuje J
Tento alternativní způsob je zvláště užitečný, když chcete předat volby xz
.
V tomto příkladu taruji a xzipuji některé soubory TIFF s vysokou úrovní komprese (-9
na xz
) a podrobný výstup (v
na tar
, -v
na xz
):
[email protected]:~/Pictures$ tar vc *.tif{,f} | xz -9v > pics.tar.xz
page001.tif
page002.tif
page003.tif
page004.tif
page9087.tif
page3la.tiff
quux0000.tiff
100 % 207.3 KiB / 290.0 KiB = 0.715
To lze samozřejmě provést také ve dvou výslovně samostatných krocích:
[email protected]:~/Pictures$ tar vcf pics.tar *.tif{,f}
page001.tif
page002.tif
page003.tif
page004.tif
page9087.tif
page3la.tiff
quux0000.tiff
[email protected]:~/Pictures$ xz -9v pics.tar
pics.tar (1/1)
100 % 207.3 KiB / 290.0 KiB = 0.715
Tyto dva způsoby nejsou ve skutečnosti ekvivalentní v tom, jak fungují, ačkoli .tar.xz
soubory, které nakonec produkují, by měly být stejné (a byly, když jsem to testoval).
- V první je výstup
tar
je zprostředkován (|
) na vstupxz
.xz
přijímá data ztar
téměř okamžitě a nikdy se nevytvoří žádný přechodný nekomprimovaný soubor tar. To znamená, že první způsob je v podstatě ekvivalentnítar cJf archive files...
, kromě dalších argumentů předávaných doxz
. - Ve druhém je prvním příkazem vytvořen nekomprimovaný archiv tar a poté komprimován pomocí
xz
ve druhém příkazu. (xz
po dokončení automaticky odstraní původní soubor, pokud není vyvolán pomocí-k
/--keep
.)
Pro další čtení se podívejte na tento příspěvek od Rafaela van Horna a tar
a xz
manuálové stránky.