Use the rsync powers of rsnapshot to make daily, weekly, and monthly backups of data.
I do an automatic daily backup of the home directory on my laptop to a local server. But what if I delete something on Monday, backup the modified directory, and realize on Friday “Doh! I need that!”. If I have the item saved on external storage no problem. Between daily syncs of a backup and periodic manual syncs to a portable hard drive, however, its possible that it might be weeks or months later when I realize I need something I had removed. Might there be a better way to track changes to a home backup?
Yes there is! Rsnapshot makes one complete backup, then makes incremental snapshots of that full backup that tracks any modifications. It is very resource efficient. A daily snapshot of a 100GB directory that is unchanged might be only 20MB. Good stuff!
rsnapshot on my Debian server, make a directory to store snapshots, and make a copy of the default rsnapshot config …
$ sudo apt install rsnapshot $ mkdir -p /path/to/backup/snapshots $ sudo cp /etc/rsnapshot.conf /etc/rsnapshot.conf.default
/etc/rsnapshot.conf (important to separate fields with TABS not spaces) 1 and (for example) uncomment the options listed below, plus create a schedule of (6) daily, (4) weekly, and (3) monthly snapshots …
snapshot_root /path/to/backup/snapshots/ cmd_cp /bin/cp cmd_rm /bin/rm cmd_rsync /usr/bin/rsync cmd_logger /usr/bin/logger cmd_du /usr/bin/du cmd_rsnapshot_diff /usr/bin/rsnapshot-diff retain daily 6 retain weekly 4 retain monthly 3 verbose 2 loglevel 3 logfile /var/log/rsnapshot.log lockfile /var/run/rsnapshot.pid exclude /home/foo/.cache exclude /home/foo/.thumbnails backup /home/foo/ localhost/
Check for proper syntax and run a snapshot test …
$ sudo rsnapshot configtest $ sudo rsnapshot -t daily
If everything checks out OK run the daily snapshot (full backup on first run) …
$ sudo rsnapshot daily
Check the disk space used by rsnapshot by calling it with the
du argument …
$ rsnapshot du
Make automatic snapshots by modifying the sample cron file provided in
/etc/cron.d/rsnapshot and running jobs as
root. Example …
# m h dom mon dow command 10 3 * * * root /usr/bin/rsnapshot daily 10 2 * * 0 root /usr/bin/rsnapshot weekly 10 1 1 * * root /usr/bin/rsnapshot monthly
These settings will run a daily snapshot everyday at 03:10, a weekly snapshot every Sunday at 02:10, and a monthly snapshot on the first of every month at 01:10. Make sure to stagger the backups so that rsnapshot does not get snarled trying to do overlapping backups at the same time.
- If using vim with the
expandtab(replace tabs with whitespace) option, disable it temporarily when editing the config. [return]