Pensando fora da caixa agora: use git
. Cada backup pode ser uma nova confirmação, que pode receber uma mensagem de descrição arbitrária e registra os registros de data e hora exatos e as permissões de arquivo de qualquer maneira. git
será deduplicado implicitamente, pois funciona com hashes de arquivo e armazenará apenas os que forem alterados (todos os "objetos" são armazenados internamente e acessados por meio de hashes, portanto, uma renomeação também é detectada). Não importa muito, se os arquivos não são baseados em texto, ele funciona para o binário da mesma forma, apenas mesclar não (mas você não precisa disso para backup de qualquer maneira).
Além disso, com git
, você também tem toda a maquinaria para verificar qualquer versão passada, mesclar ou ramificar, eliminar as ramificações antigas e restaurar a partir de backup também é trivial. Para fins de backup, a pasta original não precisa ser um repositório git - você ainda pode copiar coisas para o repositório e confirmar mudanças. Um arquivo .gitignore
adequado também ignorará automaticamente os arquivos especificados, para que você apenas salve os itens essenciais.