Como faço para compactar vários arquivos em um arquivo .xz?

8

Eu quero compactar várias imagens em um arquivo .xz. Como eu faço isso?

    
por Distant Graphics 16.04.2015 / 14:46

3 respostas

10

Embora tar cJf archive files... como detalhado por Zacharee1 e xz comando:

tar c files... | xz > archive.tar.xz

Como o tar do Ubuntu suporta a opção J , O modo alternativo é especialmente útil quando você deseja passar opções para xz .

Neste exemplo, eu coloco e xzip alguns arquivos TIFF com um alto nível de compactação ( -9 to xz ) e saída detalhada ( v to tar , -v to 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

Isso, claro, também pode ser feito em duas etapas explicitamente separadas:

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

Essas duas maneiras não são realmente equivalentes em como elas operam, embora os arquivos .tar.xz que eles produzem no final devam ser os mesmos (e foram, quando eu os testei).

  • No primeiro, a saída de tar é canalizado ( | ) para o entrada de xz . xz recebe dados de tar quase imediatamente e nenhum arquivo tar descompactado intermediário é criado. Isso quer dizer que a primeira maneira é essencialmente equivalente a tar cJf archive files... , exceto pelos argumentos adicionais passados para xz .
  • No segundo, um arquivo tar descompactado é criado pelo primeiro comando e, em seguida, compactado por xz no segundo comando. ( xz exclui automaticamente o arquivo original quando ele é feito, a menos que seja chamado com -k / --keep .)

Para ler mais, consulte esta postagem de Rafael van Horn e as páginas tar e xz .

    
por Eliah Kagan 16.04.2015 / 19:11
10

Use tar com -J opção:

tar -cvJf images.tar.xz /directory/containing/images/*

tar é usado para combinar vários arquivos em um (Arquivo) e, em seguida, precisamos compactar o arquivo usando o algoritmo de compactação XZ.

Em 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

Observe também que images.tar.xz será criado no diretório atual, se você quiser salvá-lo em outro local, use /full/path/to/images.tar.xz .

    
por heemayl 16.04.2015 / 14:49
3

Use este comando: tar cJf <archive.tar.xz> <files> . Caminhos de arquivos separados com um espaço.

    
por TheWanderer 16.04.2015 / 14:49