From bb7c28698e7d66ed14d3d3d5897df9cde5e2ff78 Mon Sep 17 00:00:00 2001 From: Martin Pitt Date: Mon, 6 Aug 2007 22:58:52 +0200 Subject: [PATCH] add backup --- backup | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100755 backup diff --git a/backup b/backup new file mode 100755 index 0000000..f1ecfd4 --- /dev/null +++ b/backup @@ -0,0 +1,40 @@ +#!/usr/bin/python + +# call rsnapshot daily/weekly/monthly regularly +# this should be called from cron very often (several times a day) to not miss +# a cycle when the machine is powered down for extended times. +# +# Author: Martin Pitt +# License: Public Domain + +import os, time, os.path, pwd, subprocess + +user = pwd.getpwuid(os.getuid()).pw_name +rsnapshot_basedir = '/var/backups/' + user +rsnapshot_conffile = os.path.expanduser('~/.rsnapshotrc') +verbose = True + +def days_mod(path): + '''Return the number of days since the last modification of path.''' + + if os.path.exists(path): + return (time.time() - os.stat(path).st_mtime)/86400. + else: + return time.time()/86400. + +def rsnapshot(mode): + argv = ['rsnapshot'] + if verbose: + argv.append('-v') + argv += ['-c', rsnapshot_conffile, mode] + if verbose: + print argv + subprocess.call(argv) + +# daily +if days_mod(os.path.join(rsnapshot_basedir, 'daily.0')) >= 1: + rsnapshot('daily') +elif days_mod(os.path.join(rsnapshot_basedir, 'weekly.0')) >= 7: + rsnapshot('weekly') +elif days_mod(os.path.join(rsnapshot_basedir, 'monthly.0')) >= 30: + rsnapshot('monthly') -- 2.39.2