Voglio comprimere diverse immagini in un archivio .xz. Come lo faccio?
Voglio comprimere diverse immagini in un archivio .xz. Come lo faccio?
Risposte:
Anche se come dettagliato da Zacharee1 e da heemayl è di solito quello che vorrai fare, un altro modo è di inviare i dati tarati al comando:tar cJf archive files...
xz
tar c files... | xz > archive.tar.xz
Poiché Ubuntu tar
supporta l' J
opzione, questo modo alternativo è particolarmente utile quando si desidera passare le opzioni a xz
.
In questo esempio, ho tar e xzip alcuni file TIFF con un alto livello di compressione ( -9
a xz
) e output dettagliato ( v
a tar
, -v
a xz
):
ek@Io:~/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:
ek@Io:~/Pictures$ tar vcf pics.tar *.tif{,f}
page001.tif
page002.tif
page003.tif
page004.tif
page9087.tif
page3la.tiff
quux0000.tiff
ek@Io:~/Pictures$ xz -9v pics.tar
pics.tar (1/1)
100 % 207.3 KiB / 290.0 KiB = 0.715
Questi due modi non sono in realtà equivalenti nel modo in cui funzionano, anche se i .tar.xz
file che producono alla fine dovrebbero essere gli stessi (e lo erano, quando l'ho provato).
tar
è reindirizzato ( |
) all'input di xz
. xz
riceve tar
quasi immediatamente i dati e non viene mai creato alcun file tar non compresso intermedio. Questo per dire che il primo modo è sostanzialmente equivalente atar cJf archive files...
, ad eccezione degli argomenti aggiuntivi passati a xz
.xz
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 le pagine man tar
e xz
.
tar -J
è quello di specificare la variabile di ambiente XZ_OPT
, rendendo l'invocazione simile al seguente:XZ_OPT="-9v" tar -Jcf out.tar.xz [files]
Usa tar
con -J
opzione:
tar -cvJf images.tar.xz /directory/containing/images/*
tar
viene utilizzato per combinare più file in uno (archivio) e quindi è necessario comprimere l'archivio utilizzando l'algoritmo di compressione XZ.
Da man tar
:
-c, --create
create a new archive
-v, --verbose
verbosely list files processed
-J, --xz
-f, --file ARCHIVE
use archive file or device ARCHIVE
Si noti inoltre che images.tar.xz
verrà creato nella directory corrente, se si desidera salvarlo da qualche altra parte utilizzare /full/path/to/images.tar.xz
.
xz
è il più lento tra xz
, gzip
, bzip2
a causa del suo rapporto di compressione più alto del lentezza others..the vale la pena di affrontare se si vuole di più la compressione ..
Utilizzare questo comando: tar cJf <archive.tar.xz> <files>
. Separare i percorsi dei file con uno spazio.
-cfJ
-
di fronte..da man tar
: A function letter need not be prefixed with ``-''
.. quindi tar cJf
è assolutamente OK.
tar cJf
, che darebbe all'OP un altro modo di farlo, dato che la mia risposta è già stata trattata tar --cvJf
all'inizio ..