Simple rsync incremental backup that timestamps deleted files
I use rsync
as follows:
rsync -a --backup --suffix="."$(date +"%Y%m%d%H%M") source backups
to dump the whole of folder source into the folder backups, with the additional feature that if I modify some file foo in source, the old version of foo in backups will be renamed with a date suffix before the new foo is copied into backups.
This simple procedure does the job for me, only that I would like a deleted file to be renamed with the date suffix instead of being removed from backups. That is, if foo is deleted from source, then rename foo in backups with the date suffix.
I have tried to achieve this but so far no success. Any ideas?
Adding the --backup-dir
option should do what you're looking for:
--backup-dir=DIR In combination with the --backup option, this tells rsync to store all backups in the specified directory on the receiving side. This can be used for incremental backups. You can additionally specify a backup suffix using the --suffix option (otherwise the files backed up in the specified directory will keep their original filenames).
e.g.
rsync -ab --backup-dir=versions --suffix="."$(date +"%Y%m%d%H%M") --delete /source/folder/ /destination/folder
This would create backups of your files at /destination/versions
Source: https://linux.die.net/man/1/rsync
For incremental rsync backup used rsnapshot tool.
Sample rsnapshot.conf
snapshot_root /backup
cmd_cp /bin/cp
cmd_rm /bin/rm
cmd_rsync /usr/bin/rsync
cmd_ssh /usr/bin/ssh
cmd_logger /usr/bin/logger
cmd_du /usr/bin/du
cmd_rsnapshot_diff /usr/bin/rsnapshot-diff
retain daily 7
retain weekly 4
verbose 2
loglevel 3
logfile /var/log/rsnapshot.log
lockfile /var/run/rsnapshot.pid
backup root@localhost:/etc/ localhost/
backup root@localhost:/home localhost/
backup root@localhost:/var/www/ localhost/
Set Cronjobs For auto backup:
# m h dom mon dow command
#Run Rsnapshot At 02:00 Everyday
00 02 * * * /usr/bin/rsnapshot daily
#Run Rsnapshot At 06:00 Every Sunday
00 06 * * 0 /usr/bin/rsnapshot weekly