Come comprimo più file in un archivio .xz?


Risposte:


10

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 tarsupporta l' Jopzione, 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 ( -9a xz) e output dettagliato ( va tar, -va 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.xzfile che producono alla fine dovrebbero essere gli stessi (e lo erano, quando l'ho provato).

  • Nel primo, l' output di tarè reindirizzato ( |) all'input di xz. xzriceve tarquasi 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.
  • Nel secondo, un archivio tar non compresso viene creato dal primo comando, quindi compresso dal xzsecondo 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 le pagine man tare xz.


1
+ 1..questo è buono quando si desidera un rapporto di compressione più elevato (o variabile) ..
heemayl

2
Ciao 2015 Un altro modo in cui è possibile ottenere livelli di compressione variabili 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]
Wug

2
@Wug È un'ottima idea. Mi sembra che meriti una sua risposta separata. Sei disposto a postarlo?
Eliah Kagan,

13

Usa tarcon -Jopzione:

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.xzverrà creato nella directory corrente, se si desidera salvarlo da qualche altra parte utilizzare /full/path/to/images.tar.xz.


ha iniziato il processo di xzing di diversi enormi PSD e, a dire il vero, l'archivio offre una compressione enorme! 400 MB + ora sono 200 MB
Distant Graphics

1
great..although xzè il più lento tra xz, gzip, bzip2a causa del suo rapporto di compressione più alto del lentezza others..the vale la pena di affrontare se si vuole di più la compressione ..
heemayl

I miei psds in totale sono, come, 600-900 MB totali xD
Grafica distante

sei a posto ....
heemayl

qualche tipo di errore ._.
Distant Graphics

3

Utilizzare questo comando: tar cJf <archive.tar.xz> <files>. Separare i percorsi dei file con uno spazio.


hai bisogno di questo:-cfJ
AB

1
@AB: non è necessario -di fronte..da man tar: A function letter need not be prefixed with ``-''.. quindi tar cJfè assolutamente OK.
Hememl

@heemayl Ma non sembra funzionare. L'ho provato senza il '-', ma tar non è completo.
AB

@heemayl Questo è quello che ho pensato.
TheWanderer

1
Nota che dovresti seguire la tua prima risposta tar cJf, che darebbe all'OP un altro modo di farlo, dato che la mia risposta è già stata trattata tar --cvJfall'inizio ..
heemayl
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.