Quero compactar várias imagens em um arquivo .xz. Como faço isso?
Quero compactar várias imagens em um arquivo .xz. Como faço isso?
Respostas:
Embora, como detalhado por Zacharee1 e por heemayl, seja o que você deseja fazer, outra maneira é canalizar dados tarados para o comando:tar cJf archive files...
xz
tar c files... | xz > archive.tar.xz
Como o Ubuntu tar
suporta a J
opção, essa maneira alternativa é especificamente útil quando você deseja passar opções para xz
.
Neste exemplo, eu tar e xzip alguns arquivos TIFF com um alto nível de compactação ( -9
para xz
) e saída detalhada ( v
para tar
, -v
para 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
Obviamente, isso 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 na maneira como operam, embora os .tar.xz
arquivos que eles produzem no final devam ser os mesmos (e eram, quando eu o testei).
tar
é canalizada ( |
) para a entrada de xz
. xz
recebe dados tar
quase imediatamente e nenhum arquivo tar descompactado intermediário é criado. Isso significa que a primeira maneira é essencialmente equivalente atar cJf archive files...
, exceto pelos argumentos adicionais passados para xz
.xz
no segundo comando. ( xz
exclui automaticamente o arquivo original quando terminar, a menos que seja chamado com -k
/ --keep
.)Para uma leitura mais aprofundada, consulte este post de Rafael van Horn e as páginas tar
e xz
man.
tar -J
é para especificar a variável de ambiente XZ_OPT
, tornando a invocação algo como:XZ_OPT="-9v" tar -Jcf out.tar.xz [files]
Use tar
com a -J
opção:
tar -cvJf images.tar.xz /directory/containing/images/*
tar
é usado para combinar vários arquivos em um (arquivo morto) e, em seguida, precisamos compactar o arquivo morto usando o algoritmo de compressão XZ.
De 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 lugar, use /full/path/to/images.tar.xz
.
xz
é o mais lento entre xz
, gzip
, bzip2
devido à sua maior taxa de compressão do que a lentidão others..the vale para lidar com se você quiser mais de compressão ..
Utilize este comando: tar cJf <archive.tar.xz> <files>
. Separe os caminhos de arquivo com um espaço.
-cfJ
-
em front..from man tar
: A function letter need not be prefixed with ``-''
..assim tar cJf
é absolutamente OK.
tar cJf
, que daria OP outra maneira de fazer isso como a minha resposta já coberto tar --cvJf
em primeiro lugar ..