Aqui estão três abordagens. O primeiro tem a minha preferência.
Altere o processo de geração de arquivos
Em vez de regenerar os arquivos indiscriminadamente ( dump_table foo >foo.dump
), mantenha o arquivo antigo, se for idêntico ao novo.
dump_table foo >foo.dump.new
if cmp foo.dump foo.dump.new; then
rm foo.dump.new
else
mv foo.dump.new foo.dump
fi
Monte os arquivos como diretórios
Use o AVFS para criar uma visão de toda a sua hierarquia de diretórios onde todos os arquivos possuem um diretório associado (mesmo nome com #
anexado no final) que parece conter o conteúdo do arquivo.
mountavfs
d=$(date -d %Y%m%d%H%M%S); mkdir $d; tar czf /path/to/$d.tgz $d; rmdir $d
cd /path/to/back/up
rsync -ac --compare-dest=~/.avfs/path/to/yesterday.tgz . ~/.avfs/path/to/$d.tgz
Use uma ferramenta de backup com o recurso necessário
Os programas de backup precisam ser extremamente confiáveis. É difícil para uma solução caseira cobrir todos os casos. Portanto, considere um programa de backup completo. Acho que a duplicidade faria o que você precisa: executa backups incrementais e usa o algoritmo rsync, por isso não deve desperdiçar qualquer espaço nos dados que já estão lá.