Como as tarefas do cron são executadas todos os dias e você deseja manter 30 versões, isso é o mesmo que excluir todos os backups incrementais com mais de 30 dias.
Isso é possível com o rdiff-backup usando a --remove-older-than
da opção specifiying 30D
ou 1M
. Você não pode combinar --remove-older-than
com o backup ou a restauração de dados em um único comando. Você precisará adicionar linhas ao seu crontab.
Outra ressalva é que --remove-older-than
se recusa a excluir vários incrementos ao mesmo tempo, a menos que você especifique a opção --force
. Você pode tentar executá-lo uma vez manualmente com --force
e, em seguida, deixar que as tarefas agendadas excluam um incremento a cada dia. Isso pode causar problemas se as tarefas agendadas não forem executadas por qualquer motivo (como o servidor estar inativo). Eu incluiria a opção --force
nos trabalhos agendados.
Seu novo crontab poderia ser algo assim:
0 0 * * * user rdiff-backup -v9 [email protected]::/var/www/ /mnt/server1/www
0 1 * * * user rdiff-backup -v9 [email protected]::/var/www/ /mnt/server2/www
0 2 * * * user rdiff-backup -v9 [email protected]::/var/www/ /mnt/server3/www
0 3 * * * user rdiff-backup -v9 --remove-older-than 1M --force /mnt/server1/www
20 3 * * * user rdiff-backup -v9 --remove-older-than 1M --force /mnt/server2/www
40 3 * * * user rdiff-backup -v9 --remove-older-than 1M --force /mnt/server3/www
Se você exclui ou não os incrementos antigos antes de criar o novo backup ou quando você executa qual trabalho é algo que deve decidir.
Para ser claro: somente as informações necessárias para restaurar em um estado de backup incremental anterior a 30 dias serão removidas, não os dados antigos que ainda estão presentes no momento ou em um backup incremental mais recente.
Para mais informações sobre a opção --remove-older-than
, você pode ler a página do manual :
--remove-older-than time_spec
Remove the incremental backup information in the destination
directory that has been around longer than the given time.
time_spec can be either an absolute time, like "2002-01-04", or
a time interval. The time interval is an integer followed by
the character s, m, h, D, W, M, or Y, indicating seconds, min-
utes, hours, days, weeks, months, or years respectively, or a
number of these concatenated. For example, 32m means 32 min-
utes, and 3W2D10h7s means 3 weeks, 2 days, 10 hours, and 7 sec-
onds. In this context, a month means 30 days, a year is 365
days, and a day is always 86400 seconds.
rdiff-backup cannot remove-older-than and back up or restore in
a single session. In order to both backup a directory and
remove old files in it, you must run rdiff-backup twice.
By default, rdiff-backup will only delete information from one
session at a time. To remove two or more sessions at the same
time, supply the --force option (rdiff-backup will tell you if
--force is required).
Note that snapshots of deleted files are covered by this opera-
tion. Thus if you deleted a file two weeks ago, backed up imme-
diately afterwards, and then ran rdiff-backup with --remove-
older-than 10D today, no trace of that file would remain.
Finally, file selection options such as --include and --exclude
don't affect --remove-older-than.