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
tar
viene inviato tramite pipe (|
) all'input dixz
.xz
riceve i dati datar
quasi 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
xz
nel secondo comando. (xz
elimina 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.