Da maneira que você está fazendo isso, com a compactação de um arquivo .tar
, a resposta é com certeza que não.
Independentemente do que você usa para compactar o arquivo .tar
, ele não sabe sobre o conteúdo do arquivo, ele apenas vê um fluxo binário e se partes desse fluxo são não compactáveis ou minimamente compactáveis, não há como isso é conhecido. Não fique confuso com as opções do comando tar
para fazer a compactação, tar --create --xz --file some.tar file1
é tão "burro" quanto saber sobre o conteúdo do fluxo como tar --create file1 | xz > some.tar
é.
Você pode fazer várias coisas:
- você alterna para algum formato de contêiner diferente de
.tar
, que permite compactar individualmente, mas isso é desfavorável se você tiver muitos arquivos pequenos em um diretório que tenha padrões semelhantes (conforme eles são compactados individualmente). O formato zip é um exemplo que funcionaria. - você compacta os arquivos, se apropriado antes de colocá-los no arquivo tar. Isto pode ser feito de forma transparente com, e. o python
tarfile
ebzip2
modules Isso também tem as desvantagens do ponto 1. E não há extração direta do arquivo tar, pois alguns arquivos sairão compactados que podem não precisar de descompactação (como já foram compactados antes do backup) . - Use o tar como está e viva com o fato de isso acontecer e selecione uma compactação não muito alta para
gzip
/bzip2
/xz
, de modo que eles não tentem compactar muito o fluxo, não desperdiçando tempo na tentativa de obter outra compressão de 0,5%, o que não vai acontecer.
Você pode querer olhar para os resultados da compressão xz
do paralelismo (não específico para arquivos tar), para ver alguns resultados de tentar acelerar xz
como publicado no meu blog