Domanda Creare un tar.xz in un comando


Sto cercando di creare un .tar.xz archivio compresso in un unico comando. Qual è la sintassi specifica per questo?

Ho provato tar cf - file | xz file.tar.xzma non funziona


88
2017-09-17 17:08


origine


risposte:


Usa il -J opzione di compressione per xz. E ricordati di man tar :)

tar cfJ <archive.tar.xz> <files>

Modifica 2015-08-10:

Se stai passando gli argomenti a tar  con trattini (ex: tar -cf al contrario di tar cf), poi il -f l'opzione deve venire per ultima, dal momento che specifica il nome del file (grazie a @ A-B-B per averlo fatto notare!). In questo caso, il comando ha il seguente aspetto:

tar -cJf <archive.tar.xz> <files>

144
2017-09-17 17:12



Interruttore -J funziona solo su sistemi più recenti. Il comando universale è:

Per creare un archivio .tar.xz

                tar cf - directory/ | xz -z - > directory.tar.xz

Spiegazione

  1. tar cf - directory legge la directory / e inizia a metterlo in formato TAR. L'output di questa operazione viene generato sull'output standard.

  2. | pipe standard output to input di un altro programma ...

  3. ... che sembra essere xz -zf -. XZ è configurato per creare (-z) l'archivio dal file (-f) che risulta essere un input standard (-).

  4. Si reindirizza l'output da xz al tar.xz file.


29
2017-07-10 00:31



Se ti piace la modalità pipe, questa è la soluzione più pulita:

tar c some-dir | xz > some-dir.tar.xz

Non è necessario mettere il f opzione per trattare i file e quindi usarli - per specificare che il file è lo standard input. Inoltre, non è necessario specificare il -z opzione per xz, perché è predefinito.

Funziona con gzip e bzip2 pure:

tar c some-dir | gzip > some-dir.tar.gz

o

tar c some-dir | bzip2 > some-dir.tar.bz2

Anche la decompressione è abbastanza semplice:

xzcat tarball.tar.xz | tar x
bzcat tarball.tar.bz2 | tar x
zcat tarball.tar.gz | tar x

Se hai solo tar archivio, puoi usare cat:

cat archive.tar | tar x

Se è necessario elencare solo i file, utilizzare tar t.


22
2018-01-05 18:11



Prova questo: tar -cf file.tar file-to-compress ; xz -z file.tar

Nota:

  1. tar.gz e tar.xz non sono la stessa cosa; xz fornisce una compressione migliore.
  2. Non usare il tubo |  perché esegue i comandi contemporaneamente. utilizzando ; o & esegue i comandi uno dopo l'altro.

5
2018-03-10 13:03



Usando le opzioni di compressione xz

Se si desidera utilizzare le opzioni di compressione per xzo se stai usando tar su MacOS, probabilmente vuoi evitare il tar -cJf sintassi.

Secondo man xz, il modo per farlo è:

tar cf - baz | xz -4e > baz.tar.xz

Perché mi piaceva Wojciech Adam Koszek's format, ma non informazioni:

  1. c crea un nuovo archivio per i file specificati.
  2. f legge da una directory (meglio mettere questo secondo perché -cf ! = -fc)
  3. - uscite su uscita standard
  4. | pipe in uscita al prossimo comando
  5. xz -4e chiamate xz con il -4e opzione di compressione. (uguale a -4  --extreme)
  6. > baz.tar.xz dirige il file tarrato e compresso in baz.tar.xz 

dove -4e è, usa le tue opzioni di compressione. Io uso spesso -k a --keep il file originale e -9 per una compressione veramente pesante. -z per impostare manualmente xz per comprimere, anche se il valore predefinito è zippare se non diversamente indicato.

Per decomprimere e decomprimere

Per eco Rafael van Horn, per decomprimere e decomprimere (vedi nota sotto):

xz -dc baz.tar.xz | tar x

Nota: diversamente La risposta di Rafael, uso xz -dc invece di catxz. I documenti lo raccomandano nel caso in cui lo stiate utilizzando per lo scripting. Meglio avere l'abitudine di usare -d o --decompress invece di unxz anche. Tuttavia, se è necessario, l'uso di questi comandi dalla riga di comando va bene.


3
2018-05-03 15:40