3 # call rsnapshot daily/weekly/monthly regularly
4 # this should be called from cron very often (several times a day) to not miss
5 # a cycle when the machine is powered down for extended times.
7 # Author: Martin Pitt <martin@piware.de>
8 # License: Public Domain
10 import os, time, os.path, pwd, subprocess
12 user = pwd.getpwuid(os.getuid()).pw_name
13 rsnapshot_basedir = '/var/backups/' + user
14 rsnapshot_conffile = os.path.expanduser('~/.rsnapshotrc')
18 '''Return the number of days since the last modification of path.'''
20 if os.path.exists(path):
21 return (time.time() - os.stat(path).st_mtime)/86400.
23 return time.time()/86400.
29 argv += ['-c', rsnapshot_conffile, mode]
35 if days_mod(os.path.join(rsnapshot_basedir, 'daily.0')) >= 1:
37 elif days_mod(os.path.join(rsnapshot_basedir, 'weekly.0')) >= 7:
39 elif days_mod(os.path.join(rsnapshot_basedir, 'monthly.0')) >= 30: