Risposte:
Utilizzare l' -Jopzione di compressione per xz. E ricorda di man tar:)
tar cfJ <archive.tar.xz> <files>
Modifica 10-08-2015:
Se stai passando gli argomenti tar con trattini (es: tar -cfal contrario di tar cf), allora l' -fopzione deve arrivare per ultima , poiché specifica il nome del file (grazie a @ABB per averlo sottolineato!). In tal caso, il comando appare come:
tar -cJf <archive.tar.xz> <files>
fultimo, anche senza il trattino.
tarsu macOS sembra supportare -Jma la funzionalità non è indicata nella pagina man. Ho dovuto cercare qui. Anche se citano XZ nella sezione su --options...
Switch -Jfunziona solo su sistemi più recenti. Il comando universale è:
Per fare l'archivio .tar.xz
tar cf - directory/ | xz -z - > directory.tar.xz
Spiegazione
tar cf - directorylegge directory / e inizia a metterlo in formato TAR. L'output di questa operazione viene generato sull'output standard.
| convoglia l'output standard all'ingresso di un altro programma ...
... che sembra essere xz -z -. XZ è configurato per comprimere ( -z) l'archivio dallo standard input ( -).
Si reindirizza l'output da xzal tar.xzfile.
-fnon significa "dal file" quando passato a xz. Invece è l'abbreviazione di --force(vedi xz (1) per i dettagli), e non è meglio usarlo se non necessario.
tar cf - directory/ | xz -z -T0 - > directory.tar.xz
-1 -T0o -0 -T0come opzioni, che di solito ti darà comunque un file più piccolo di gzip in un tempo comparabile o più veloce, mentre l'impostazione predefinita -6è considerevolmente più lenta di gzip.
Se ti piace la modalità pipe, questa è la soluzione più pulita:
tar c some-dir | xz > some-dir.tar.xz
Non è necessario inserire l' fopzione per gestire i file e quindi utilizzare -per specificare che il file è l'input standard. Inoltre, non è necessario specificare l' -zopzione per xz, poiché è predefinita.
Funziona con gzipe bzip2troppo:
tar c some-dir | gzip > some-dir.tar.gz
o
tar c some-dir | bzip2 > some-dir.tar.bz2
Anche il decompressione è abbastanza semplice:
xzcat tarball.tar.xz | tar x
bzcat tarball.tar.bz2 | tar x
zcat tarball.tar.gz | tar x
Se hai solo un tararchivio, puoi usare cat:
cat archive.tar | tar x
Se è necessario elencare solo i file, utilizzare tar t.
Se vuoi usare le opzioni di compressione per xz, o se stai usando tarsu MacOS, probabilmente vuoi evitare la tar -cJfsintassi.
Secondo man xz, il modo per farlo è:
tar cf - baz | xz -4e > baz.tar.xz
Perché mi è piaciuto il formato di Wojciech Adam Koszek , ma non le informazioni:
c crea un nuovo archivio per i file specificati. flegge da una directory (meglio inserire questo secondo perché -cf! = -fc)- uscite allo standard output| pipe in uscita al comando successivoxz -4echiama xzcon l' -4eopzione di compressione. (uguale a -4 --extreme)> baz.tar.xz indirizza il file tarred e compresso a baz.tar.xz dov'è -4e, usa le tue opzioni di compressione. Io uso spesso -kper --keepil file originale e -9per la compressione davvero pesante. -zimpostare manualmente xzsu zip, anche se per impostazione predefinita è zippato se non diversamente indicato.
Per fare eco a Rafael van Horn , per decomprimere e annullare (vedi nota sotto):
xz -dc baz.tar.xz | tar x
Nota: a differenza della risposta di Rafael , utilizzare xz -dcinvece di catxz. I documenti lo raccomandano nel caso in cui lo stiate usando per lo scripting. Meglio avere l'abitudine di usare -do --decompressinvece di unxzpure. Tuttavia, se è necessario, utilizzare tali comandi dalla riga di comando va bene.
tar -cJfsintassi su MacOS? Solo curioso, perché lo stavo facendo proprio ora e sembrava funzionare.
Prova questo: tar -cf file.tar file-to-compress ; xz -z file.tar
Nota:
| perché eseguono comandi contemporaneamente. L'uso ;o l' &esecuzione di comandi uno dopo l'altro.Jun'opzione, ma funziona. Penso che tu abbia bisogno di RHEL6.
tar -c file-to-compress | xz -z > file.tar.xz.
&non avvierà un comando uno dopo l'altro. Invece, lancerà il primo come processo in background.
val comando switch (tar -cJvf) per essere dettagliato mostra i file che vengono aggiunti all'archivio.