Tenho centenas de arquivos grandes semelhantes (30 megabytes cada) que desejo compactar. Cada par de arquivos possui 99% dos mesmos dados (menos de 1% de diferença), portanto, espero não ter mais de 40 a 50 megabytes de arquivo.
Único arquivo pode ser comprimido de 30 MB de 13-15 MB (com xz -1
, gz -1
, bzip2 -1
), mas quando comprimir dois ou mais arquivos Quero ter arquivo com tamanho 13-15MB + N*0.3MB
, onde N é o número de arquivos.
Ao usar tar
(para criar arquivo sólido) e xz -6
(para definir o dicionário de compactação como maior que um arquivo - Atualizar - isso não foi suficiente! ), Ainda tenho arquivo com tamanho N*13MB
.
Eu acho que ambos gzip
e bzip2
não vão me ajudar porque eles têm dicionário com menos de 1 MB, e meu fluxo de tar tem repetições a cada 30 MB.
Como arquivar o meu problema no Linux moderno usando ferramentas padrão?
É possível ajustar xz
a compactação rapidamente, mas use um dicionário com mais de 30 a 60 MB?
Atualização : Fiz o truque com tar c input_directory | xz --lzma2=dict=128M,mode=fast,mf=hc4 --memory=2G > compressed.tar.xz
. Não tenho certeza sobre o necessário mf=hc4
e as --memory=2G
opções; mas dict=128M
defina o dicionário para ser grande o suficiente (maior que um arquivo) e mode=fast
torne o processo um pouco mais rápido que -e
.
xz -1 --memory=2G
não ajudou, testada em 2 e 4 arquivos do conjunto.