Como usar multi-threading para criar e extrair tar.xz
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
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.
Para alcatrões mais antigos, isso funciona:
tar -cf - lista de arquivos e pastas | xz -9 -T0> | archive.tar.T.xz
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