diff options
| author | 2018-09-03 18:20:53 +0100 | |
|---|---|---|
| committer | 2018-09-03 18:20:53 +0100 | |
| commit | d528656ba5535990b0235624e84bc011d0ede985 (patch) | |
| tree | 8a526fca5f77431a6259cb03d9798a27698426df /modules | |
| parent | tag_split, not tag (diff) | |
| signature | ||
Add database_backup.py for rotated database backups
Diffstat (limited to 'modules')
| -rw-r--r-- | modules/database_backup.py | 28 |
1 files changed, 28 insertions, 0 deletions
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() |
