It's more a tip than an article but today I create a little script for you to make incremental backups using rsync.
An incremental backup is a backup that only contains modified files since the last backup. In this article I invert this principle to backup in a separate folder old versions of a modified or deleted file.
For this script we only need three options of rsync:
--deletefor deletion of useless files in the destination folder
--backupto make backup of modified or deleted files in the destination folder (mandatory for using
--backup-dirto tell to rsync which folder to use for backuped files
Note: If you don't use
--delete, rsync will keep all deleted files in the destination folder.
So, the complete command is like that:
rsync -a -b --delete --backup-dir=mydir source dest
-bis the short option of
Note: To prevent misconfiguration, you should use absolute path for
Note 2: You can use
-zif you want to compress data during the transfer
For our incremental backup we want to backup files using the backup date, so we use
date command in the rsync command, like that:
CURBCK=$(date +%Y%m%d) ABSCURBCK=/my/path/to/$CURBCK rsync -a -b --delete --backup-dir=$ABSCURBCK source/ dest
In this example I assume that we call this script only once a day (the backup folder is named using the form YYYYMMDD), you can replace
%Y%m%d%H%M%S to be more specific (YYYYMMDDHHMMSS).
Test of this bunch of commands:
# in source folder $ ls file $ sha1sum 827506be8bdb09a5f3c463ad6aa45ca66d7bccbf # We make a sync and verify file in the dest file $ ls file $ sha1sum file 827506be8bdb09a5f3c463ad6aa45ca66d7bccbf # We modify the file and make a new sync $ sha1sum source/file backup/**/file c2304cf35abdb7a8c79d29737accc75de6db495a source/file c2304cf35abdb7a8c79d29737accc75de6db495a backup/current/file 827506be8bdb09a5f3c463ad6aa45ca66d7bccbf backup/20120309201330/file # We delete the file $ sha1sum source/file backup/**/file sha1sum: source/file: No such file or directory 827506be8bdb09a5f3c463ad6aa45ca66d7bccbf backup/20120309201330/file c2304cf35abdb7a8c79d29737accc75de6db495a backup/20120309201456/file
Feel free to add scripts to compress backup files.