Tenha em mente que espelhamento e sincronização (como o RAID 1) rigorosamente não são “backup”.
Meu preferido sempre foi o Cobian Backup, mas este estacionou na versão 11, 12 anos atrás, e estou procurando por algo que ofereça uma camada de proteção contra ransonware. Até o momento o SyncBackFree foi o único gratuito a oferecer algo desse tipo. Eu só descobri hoje que o autor do Cobian Backup vem trabalhando em um sucessor, o Cobian Reflector, desde 2021. Mas na curta lista de novidades não encontrei nada realmente importante.
O que o SyncBackFree diz fazer, entre outras configurações:
- Interrompe o backup se um determinado arquivo for modificado (define um “canário”). Você sempre vai ter arquivos que em condições normais nunca vão ser alterados, como a maioria dos PDFs, mas um ransonware vai criptografar todos os documentos que encontrar;
- Interrompe o backup se um percentual X de arquivos for modificado. Idealmente todos os arquivos que são imutáveis deveriam ir para “arquivo morto” em uma mídia somente leitura, mas quase ninguém faz isso e o servidor está sempre lotado de arquivos que fazem parte do backup diário mas apenas um punhado é acrescentado ou editado diariamente. Uma quantidade incomum de alterações pode ser um sinal de comprometimento;
- Interrompe o backup se um percentual X de arquivos for acrescentado. Alguns ransonwares criptografam o arquivo mantendo o nome original, mas outros criam uma versão com outro nome e apagam o original. A configuração anterior não iria flagrar isso;
- Interrompe o backup se um percentual X de arquivos for deletado. Isso é útil tanto para detectar atos maliciosos de funcionários quanto para se proteger quando o seu “backup” é do tipo espelho.
E tem diversos mecanismos de notificação caso o backup seja interrompido, por e-mail e notificações. No mundo pré-ransomwares não era tão urgente saber se um backup falhou, mas hoje você vai querer saber imediatamente.
Eu achei a implementação de (1) limitada porque só é possível definir um arquivo canário. Isso pode ser o bastante, mas eu gostaria de ter flexibilidade para poder escolher arquivos em diversos pontos diferentes do sistema de arquivos. E esse seria o modo mais eficiente de todos os oferecidos no quesito desempenho.
[editado:] Eu cometi um erro fundamental de lógica que invalida todo o trecho a seguir. Por favor ignorem.
Não está claro como o programa implementa (2) no espelhamento e sincronização, porque idealmente você não deve interromper o processo depois que já começou a alterar o destino (no caso de backup é irrelevante). Digamos que o percentual configurado de arquivos seja 10%:
Calcular o hash de 100% dos arquivos procurando esses 10% e comparar com o registrado no banco de dados antes de começar a operação de cópia é altamente ineficiente porque leva até duas vezes mais tempo, pois calcular hash leva exatamente o mesmo tempo que copiar, se origem e destino estiverem em discos diferentes (e não é nada prudente ter sua cópia no mesmo disco). O programa pode até parar de calcular o hash quando faltar menos de 10% para terminar, mas isso não ajuda tanto.
Um modo mais eficiente é calcular o hash do arquivo enquanto faz a cópia para um arquivo temporário no destino e se for diferente do que está registrado no banco de dados apagar o que está no destino (espelhamento ou sincronização) e renomear o temporário em seu lugar. O programa precisaria ir fazendo a cópia temporária de arquivos até descobrir que 10% deles foram alterados e cancelar o processo, apagando esses temporários do backup. Como cada temporário “igual” já pode ser imediatamente deletado você precisa de “apenas” 10% de espaço livre (referente ao tamanho do total de arquivos, não à capacidade do disco) extras no disco para esse processo.
Dependendo de como o desenvolvedor implementou isso, habilitar essas opções tem um impacto grande no tempo de operação.
E ainda temos o problema: “realmente funciona?”. E há muito mais que pode dar errado em um programa desse tipo, incluindo apagar seu único original em caso de bug ou erro de configuração (a capacidade de sincronização é um perigo!).
Vou precisar de muitos testes para poder dizer.
Alguém aí tem alguma sugestão?
Eu cometi um erro fundamental de lógica que invalida parte do meu texto. Ele foi editado para refletir isso.
Eu perdi o interesse no SyncBackFree. Criei um programa em Delphi que está perto de ter toda a funcionalidade dele que me interessava.
bom dia Jeff; bom ver movimento no blog novamente, creio que estão todos bem de saúde em sua família.
Gostei do post, estou também procurando um programa pra substituir o Cobian, e fazer backup diário (2x a 4x ao dia) em uma pasta compartilhada numa rede.
Se puder desenvolver mais esse tema, agradeço!