From d528656ba5535990b0235624e84bc011d0ede985 Mon Sep 17 00:00:00 2001 From: jesopo Date: Mon, 3 Sep 2018 18:20:53 +0100 Subject: Add database_backup.py for rotated database backups --- modules/database_backup.py | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 modules/database_backup.py (limited to 'modules') diff --git a/modules/database_backup.py b/modules/database_backup.py new file mode 100644 index 00000000..32155b93 --- /dev/null +++ b/modules/database_backup.py @@ -0,0 +1,28 @@ +import datetime, glob, os, shutil, time + +BACKUP_INTERVAL = 60*60 # 1 hour +BACKUP_COUNT = 5 + +class Module(object): + def __init__(self, bot, events, exports): + self.bot = bot + now = datetime.datetime.now() + until_next_hour = 60-now.second + until_next_hour += ((60-(now.minute+1))*60) + + events.on("timer").on("database-backup").hook(self.backup) + bot.add_timer("database-backup", BACKUP_INTERVAL, persist=False, + next_due=time.time()+until_next_hour) + + def backup(self, event): + files = glob.glob("%s.*" % self.bot.args.database) + files = sorted(files) + + if len(files) == 5: + os.remove(files[0]) + + suffix = datetime.datetime.now().strftime("%y-%m-%d.%H:%M:%S") + backup_file = "%s.%s" % (self.bot.args.database, suffix) + shutil.copy2(self.bot.args.database, backup_file) + + event["timer"].redo() -- cgit v1.3.1-10-gc9f91