Voglio comprimere diverse immagini in un archivio .xz. Come faccio?
Risposta accettata:
Sebbene tar cJf archive files... come descritto in dettaglio da Zacharee1 e da heemayl è di solito quello che vorrai fare, un altro modo è inviare i dati tarred a xz comando:
tar c files... | xz > archive.tar.xz
Dal tar di Ubuntu supporta il J opzione, questo modo alternativo è particolarmente utile quando desideri passare opzioni a xz .
In questo esempio, tar e xzip alcuni file TIFF con un alto livello di compressione (-9 a xz ) e un output dettagliato (v a tar , -v a 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
Questo potrebbe, ovviamente, essere fatto anche in due passaggi esplicitamente separati:
[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
Questi due modi non sono effettivamente equivalenti nel modo in cui operano, sebbene .tar.xz i file che producono alla fine dovrebbero essere gli stessi (e lo erano, quando l'ho testato).
- Nel primo, l'output di
tarviene inviato tramite pipe (|) all'input dixz.xzriceve i dati datarquasi immediatamente e non viene mai creato alcun file tar intermedio non compresso. Questo per dire che il primo modo è essenzialmente equivalente atar cJf archive files..., ad eccezione degli argomenti aggiuntivi passati axz. - Nel secondo, un archivio tar non compresso viene creato dal primo comando, quindi compresso da
xznel secondo comando. (xzelimina automaticamente il file originale al termine, a meno che non venga richiamato con-k/--keep.)
Per ulteriori letture, vedere questo post di Rafael van Horn e il tar e xz pagine man.