Respostas:
Use a -Jopção de compactação para xz. E lembre-se de man tar:)
tar cfJ <archive.tar.xz> <files>
Editar 10/08/2015:
Se você está passando os argumentos tar com traços (por exemplo tar -cf, ao contrário de tar cf), a -fopção deve vir por último , pois especifica o nome do arquivo (obrigado a @ABB por apontar isso!). Nesse caso, o comando se parece com:
tar -cJf <archive.tar.xz> <files>
fúltimo, mesmo sem o traço.
tarno macOS parece suportar, -Jmas o recurso não é fornecido na página de manual. Tinha que procurar aqui em cima. Embora eles fazem XZ menção na seção sobre --options...
O switch -Jfunciona apenas em sistemas mais novos. O comando universal é:
Para criar o arquivo .tar.xz
tar cf - directory/ | xz -z - > directory.tar.xz
Explicação
tar cf - directorylê o diretório / e começa a colocá-lo no formato TAR. A saída desta operação é gerada na saída padrão.
| canaliza a saída padrão para a entrada de outro programa ...
... o que acontece ser xz -z -. XZ está configurado para compactar ( -z) o arquivo da entrada padrão ( -).
Você redireciona a saída de xzpara o tar.xzarquivo.
-fnão significa "do arquivo" quando passado para xz. Em vez disso, é uma abreviação de --force(consulte xz (1) para detalhes) e é melhor não ser usado, a menos que seja necessário.
tar cf - directory/ | xz -z -T0 - > directory.tar.xz
-1 -T0ou -0 -T0como opções, o que geralmente ainda oferece um arquivo menor que o gzip em um tempo comparável ou mais rápido, enquanto o padrão -6é consideravelmente mais lento do que o gzip.
Se você gosta do modo pipe, esta é a solução mais limpa:
tar c some-dir | xz > some-dir.tar.xz
Não é necessário colocar a fopção para lidar com arquivos e depois usá-lo -para especificar que o arquivo é a entrada padrão. Também não é necessário especificar a -zopção xz, porque é o padrão.
Funciona com gzipe bzip2também:
tar c some-dir | gzip > some-dir.tar.gz
ou
tar c some-dir | bzip2 > some-dir.tar.bz2
A descompressão também é bastante direta:
xzcat tarball.tar.xz | tar x
bzcat tarball.tar.bz2 | tar x
zcat tarball.tar.gz | tar x
Se você tiver apenas tararquivamento, poderá usar cat:
cat archive.tar | tar x
Se você precisar listar apenas os arquivos, use tar t.
Se você deseja usar opções de compactação para xz, ou se estiver usando tarno MacOS, provavelmente deseja evitar a tar -cJfsintaxe.
De acordo com man xz, a maneira de fazer isso é:
tar cf - baz | xz -4e > baz.tar.xz
Porque gostei do formato de Wojciech Adam Koszek , mas não da informação:
c cria um novo arquivo morto para os arquivos especificados. flê de um diretório (melhor colocar este segundo porque -cf! = -fc)- saídas para saída padrão| canaliza a saída para o próximo comandoxz -4echama xzcom a -4eopção de compactação. (igual a -4 --extreme)> baz.tar.xz direciona o arquivo tarredado e compactado para baz.tar.xz Onde -4eestá, use suas próprias opções de compactação. Costumo usar -kpara --keepo arquivo original e -9para a compressão realmente pesado. -zpara definir manualmente xzcomo zip, embora o padrão seja zipar se não for indicado de outra forma.
Para ecoar Rafael van Horn , descompactar e descompactar (veja a nota abaixo):
xz -dc baz.tar.xz | tar x
Nota: ao contrário da resposta de Rafael , use em xz -dcvez de catxz. Os documentos recomendam isso caso você esteja usando isso para scripts. Melhor ter o hábito de usar -dou em --decompressvez de unxztambém. No entanto, se necessário, o uso desses comandos na linha de comando é bom.
tar -cJfsintaxe no MacOS? Apenas curioso, porque eu estava fazendo isso agora e parecia estar funcionando.
Tente o seguinte: tar -cf file.tar file-to-compress ; xz -z file.tar
Nota:
| pois isso executa comandos simultaneamente. Usando ;ou &executa comandos um após o outro.Jopção, mas isso funciona. Eu acho que você precisa do RHEL6.
tar -c file-to-compress | xz -z > file.tar.xz.
&não inicia um comando um após o outro. Em vez disso, ele iniciará o primeiro como um processo em segundo plano.
vao comando switches (tar -cJvf) a ser detalhado mostra os arquivos que estão sendo adicionados ao archive.