I've been using rsnapshot to do backups for a year or two now but my backup NAS is just about full so I need to move to something with a bigger disk.
Rsnapshot uses rsync's --link-dest to create the hard-linked snapshots along with a lot of arcane perl (as far as I'm concerned Perl is always arcane!) and a big, complex configuration file.
So I'm considering a roll-your-own approach, it seems just too simple to be true. Does following pseudo-code look right:-
Run every day in the small hours IF (day_of_month = 1) IF (month = 1) # i.e. January 1st rename month12 to this_year ELSE remove month12 FI rename month11 to month 12 .... month1 to month2 rename day31 to month1 ELSE remove day31 FI move day30 to day31 .... day1 to day2 rsync with the --link-dest=DIR pointing to day2
I can create all the directories empty to start with so they're all there to be moved even though with nothing in them.
This will (hopefully!) create daily backups for 31 days, monthly backups for 12 months and yearly backups for ever (!?).