Nicole Hamilton observa corretamente que gzip
não encontrará dados duplicados distantes devido ao tamanho pequeno do dicionário.
bzip2
é semelhante, porque está limitado a 900 KB de memória.
Em vez disso, tente:
Algoritmo LZMA / LZMA2 ( xz
, 7z
)
O algoritmo LZMA é da mesma família que o Deflate, mas usa um tamanho de dicionário muito maior (personalizável; o padrão é algo como 384 MB). O utilitário xz
, que deve ser instalado por padrão nas distribuições Linux mais recentes, é semelhante a gzip
e usa LZMA.
Como o LZMA detecta redundância de longo alcance, ele poderá desduplicar seus dados aqui. No entanto, é mais lento que o Gzip.
Outra opção é o 7-zip ( 7z
, no pacote p7zip
), que é um arquivador (em vez de um compressor de fluxo único) que usa o LZMA por padrão (escrito pelo autor do LZMA). O arquivador 7-zip executa sua própria desduplicação no nível do arquivo (examinando arquivos com a mesma extensão) ao arquivar no formato .7z
. Isso significa que, se você estiver disposto a substituir tar
por 7z
, obterá arquivos idênticos desduplicados. No entanto, 7z não preserva timestamps, permissões ou xattrs em nanossegundos, portanto, pode não atender às suas necessidades.
lrzip
lrzip
é um compressor que pré-processa os dados para remover a redundância de longa distância antes de alimentar um Algoritmo convencional como Gzip / Deflate, bzip2, lzop ou LZMA. Para os dados de amostra que você fornece aqui, não é necessário; é útil quando os dados de entrada são maiores do que os que podem caber na memória.
Para esse tipo de dado (fragmentos incompressíveis duplicados), você deve usar lzop
de compactação (muito rápida) com lrzip
, porque não há nenhum benefício em tentar compactar dados completamente aleatórios depois de desduplicar.
Bup e Obnam
Como você marcou a pergunta backup , se sua meta aqui é de apoio Para cima, considere o uso de um programa de backup de desduplicação como Bup ou Obnam .