Entenda por que arquivos grandes incham seus backups mesmo com pequenas alterações e conheça como o Content-Defined Chunking (CDC) resolve esse problema. A técnica melhora a eficiência de armazenamento em ferramentas de código aberto como o Plakar.

Muitas vezes, ao alterar apenas uma única linha em um arquivo extenso, o sistema de backup incremental acaba reenviando o arquivo inteiro. Na maioria das vezes, o gargalo não está na rede ou no armazenamento de destino, mas sim no algoritmo responsável por fatiar os dados em pedaços menores.
Os sistemas de deduplicação funcionam dividindo as informações em blocos, gerando um hash para cada pedaço e mantendo apenas uma cópia de blocos idênticos. Quando uma captura instantânea é realizada dias depois, se grande parte dos dados permaneceu intacta, o custo da nova cópia é quase nulo. Essa eficiência é crucial para que o backup seja frequente, criptografado, imutável e verificado, sem que os custos de armazenamento tornem-se proibitivos.
O método tradicional e óbvio de divisão divide arquivos a cada N bytes fixos. Embora seja rápido, esse modelo destrói a deduplicação assim que o arquivo sofre qualquer modificação. Adicionar um único byte no início de um arquivo desloca todos os limites seguintes, fazendo com que o sistema trate todo o restante do conteúdo como dado novo. Editar uma única linha em um arquivo de 40 GB pode resultar no reenvio de quase todo o seu conteúdo.
Para solucionar isso, o Content-Defined Chunking (CDC) define os limites dos blocos com base no próprio conteúdo, e não na sua posição estática. O algoritmo desliza uma janela sobre o fluxo de bytes mantendo um hash rolante e define um corte sempre que o hash atinge um determinado padrão. Se um byte for inserido, os limites ao redor mudam, mas assim que a janela passa pela alteração, a sequência de hashes se restabelece, permitindo que o restante dos blocos seja deduplicado perfeitamente contra o snapshot anterior.
Existem diferentes implementações para essa abordagem. O clássico Rabin fingerprinting é correto, porém lento. O FastCDC substituiu o hash polinomial por um Gear hash mais barato e se tornou o padrão do setor. Outras variações incluem o UltraCDC, que prioriza blocos maiores, e o JC, que se destaca pelo alto desempenho. Testes realizados na biblioteca de código aberto go-cdc-chunkers, utilizada pelo motor de backup Plakar, demonstraram que o JC atinge marcas impressionantes de velocidade em comparação direta com os demais.
No entanto, pequenas alterações inadvertidas nas implementações de algoritmos de CDC podem corromper a identificação dos blocos ao longo do tempo, degradando a deduplicação silenciosamente. A solução exige especificações rigorosamente versionadas e vetores de teste públicos que garantam determinismo absoluto.
Ferramentas de código aberto como o Plakar aplicam esses conceitos na prática, permitindo criptografia local e deduplicação eficiente. Com comandos simples para criar repositórios locais chamados Kloset, verificar snapshots e realizar restaurações, a plataforma demonstra como o código aberto e o CDC tornam o gerenciamento de backups sustentável a longo prazo.