Estou procurando uma solução de sistema de arquivos de cópia na gravação com desduplicação para dados gerais do usuário, como /home
backups. Ele deve usar a desduplicação online / em linha / síncrona no nível do bloco usando hash seguro (para chances insignificantes de colisões) como SHA256 ou TTH . Blocos duplicados nem precisam tocar no disco.
A idéia é que eu possa copiar apenas /home/<user>
para um disco rígido externo com o mesmo sistema de arquivos para fazer um backup. Simples. Sem mexer nos backups incrementais, onde a corrupção em qualquer um dos instantâneos quase sempre interrompe todos os instantâneos posteriores, e não é necessário usar uma ferramenta específica para excluir ou 'retirar' um instantâneo. Tudo deve ser feito simplesmente no navegador de arquivos, sem preocupações. Você pode imaginar como isso seria fácil? Eu nunca precisaria pensar duas vezes em fazer backup novamente!
Não me importo com um impacto no desempenho, a confiabilidade é a principal preocupação. Embora, com implementações específicas de cp
, mv
e scp
, e um plug-in de navegador de arquivos, essas operações sejam muito rápidas, especialmente quando há muita duplicação, pois elas precisam apenas transferir os blocos ausentes. Acidentalmente, usar ferramentas de cópia convencionais que não se integram ao FS levaria apenas mais tempo, desperdiçaria alguma largura de banda ao copiar remotamente e desperdiçaria alguma CPU, pois os dados duplicados seriam relidos, transferidos e re-hash (embora nada seja reescrita), mas absolutamente não corromperia nada. (Alguns softwares de compartilhamento de arquivos também podem se beneficiar da integração com o FS.)
Então, qual é a melhor maneira de fazer isso?
Eu olhei para algumas opções:
- lessfs - Parece sem manutenção. Bom?
- Opendedup / SDFS - Java? Eu poderia usar isso no Android ?! O que SDFS representa?
- Btrfs - Alguns patches flutuando nos arquivos da lista de discussão, mas sem suporte real.
- ZFS - Esperamos que um dia eles voltem a licenciar sob uma licença compatível com GPL Free / Opensource.
Além disso, há dois anos, tentei em Python usar o Fuse no nível do arquivo para ser usado sobre um FS sólido típico como o EXT4, mas achei o Fuse for Python sub-documentado e não consegui implementar todas as chamadas do sistema.