Normalmente isso é resolvido com um backup incremental (backup de todos os arquivos desde o último backup) ou backup diferencial (todos os arquivos desde o último backup completo). O manual Gnu Tar (seção 5.2 e 5.3) tem uma breve discussão sobre esses tipos de backups. No entanto, isso não resolve o problema de querer um número mínimo de cópias de cada arquivo.
Outra opção, se você deseja obter um instantâneo exato do sistema em cada backup, ainda economizar espaço é usar backups de snapshot rsync (faça uma busca no google por snapshot rsync, existem vários artigos e ferramentas que implementam isso) . Basicamente, isso usa o rsync para fazer cópias em um sistema remoto (ou unidade externa) e usa links físicos contra arquivos que não mudam entre cada backup, para economizar espaço. Para obter várias cópias, você rsync sua unidade de backup para outra unidade de backup.
Mas, se você quer que isso aconteça em fita, a única coisa que eu sei são ferramentas de backup comerciais, como no Tivoli. Você pode olhar para Bacula, o que eu acho que também suporta manter um número mínimo de cópias, mas eu não usei esse ainda.
Algo que estará disponível em breve, é uma ferramenta de backup na qual estou trabalhando. Eu preciso montar um pouco mais de documentação e limpar o código antes de colocá-lo no github, mas basicamente ele faz backups incrementais contínuos no estilo snapshot, mantendo o controle de arquivos pelo hash MD5, e armazenando um catálogo de snapshots do que um sistema parece em cada backup. Ele também, como efeito colateral, desduplica no nível do arquivo ao fazer backup de vários hosts em um único servidor de backup. Se você estiver interessado, eu voltarei mais tarde e atualizarei este post assim que eu tiver carregado a versão inicial desta ferramenta (assumindo que não é contra a política aqui promover seus próprios projetos - se for, minhas desculpas). / p>