Como usar multi-threading para criar e extrair tar.xz

Sep 07 2020

eu uso

tar -cJvf resultfile.tar.xz  files_to_compress

para criar tar.xze

tar -xzvf resultfile.tar.xz

para extrair o arquivo no diretório atual. Como usar multiencadeamento em ambos os casos? Não quero instalar nenhum utilitário.

Respostas

6 ArtemS.Tashkinov Sep 07 2020 at 06:25
tar -c -I 'xz -9 -T0' -f archive.tar.xz [list of files and folders]

Isso compacta uma lista de arquivos e diretórios em um .tar.xzarquivo. Ele faz isso especificando os argumentos a serem passados ​​para o xzsubprocesso, que compacta o arquivo tar.

Isso é feito usando o -Iargumento para tar, que informa tarqual programa usar para compactar o arquivo tar e quais argumentos passar para ele. O -9diz xzpara usar a compressão máxima. O -T0diz xzpara usar tantos threads quanto CPUs.

WillFischer Nov 23 2020 at 22:16

Para alcatrões mais antigos, isso funciona:

tar -cf -   lista de arquivos e pastas | xz -9 -T0> | archive.tar.T.xz
wlads Nov 25 2020 at 10:24

Você pode usar XZ_DEFAULTS ou XZ_OPTS variáveis de ambiente:

XZ_DEFAULTS é recomendado para ser usado como uma configuração de todo o sistema, normalmente definida em um script de inicialização do shell.

XZ_OPT serve para passar opções para xz quando executado por um script ou ferramenta, por exemplo, GNU tar. Verman xz

Exemplo: usando vários threads (-T0) e nível de compressão máximo (-9):

XZ_OPT='-T0 -9' tar -cJf resultfile.tar.xz files_to_compress

Referência a um GNU tar recente em bash ou shell derivado , veja também a página de manual xz