def backup_cycle(self): lasttime = self.lastBackupTime now = datetime.datetime.now() compare_time = lasttime.replace(hour=4, minute=35, second=0, microsecond=0) if compare_time > lasttime: next_time = compare_time else: next_time = compare_time + datetime.timedelta(days=1) if now > next_time or self.forceBackup == True: self.forceBackup = False print 'Doing a backup (' + str(datetime.datetime.now()) + ')' with app.app_context(): flask_alchemydumps.autoclean(True) flask_alchemydumps.create() if config.BACKUP_ENABLE_FTP == True: print 'Doing a additional FTP backup' app.config['ALCHEMYDUMPS_FTP_SERVER'] = '' app.config['ALCHEMYDUMPS_FTP_USER'] = '' app.config['ALCHEMYDUMPS_FTP_PASSWORD'] = '' app.config['ALCHEMYDUMPS_FTP_PATH'] = '' flask_alchemydumps.create() app.config['ALCHEMYDUMPS_FTP_SERVER'] = config.ALCHEMYDUMPS_FTP_SERVER app.config['ALCHEMYDUMPS_FTP_USER'] = config.ALCHEMYDUMPS_FTP_USER app.config['ALCHEMYDUMPS_FTP_PASSWORD'] = config.ALCHEMYDUMPS_FTP_PASSWORD app.config['ALCHEMYDUMPS_FTP_PATH'] = config.ALCHEMYDUMPS_FTP_PATH print 'Next backup @' + str(next_time) + ' (' + str(datetime.datetime.now()) + ')' logentry = Action(datetime.datetime.utcnow(), config.NODE_NAME, 'Sync Master', '*****@*****.**', 'Backup database', 'Backup', 'L1', 0, 'Internal') db.session.add(logentry) db.session.commit() self.lastBackupTime = now
def test_autoclean(self, mock_path): mock_path.return_value = self.dir + os.sep with app.app_context(): # create fake backup dir backup = Backup() date_ids = [ '20110824045557', '20100106120931', '20090728192328', '20070611074712', '20130729044443', '20070611090332', '20090927181422', '20060505063150', '20090608052756', '20050413201344', '20111015194547', '20090711221957', '20140425202739', '20130808133229', '20120111210958', '20120419224811', '20060519170013', '20090111042034', '20100112115416' ] class_names = ['Post', 'User', 'SomeControl', 'Comments'] for date_id in date_ids: for class_name in class_names: name = backup.get_name(class_name, date_id) backup.target.create_file(name, ''.encode()) # assert files were created history() backup = Backup() backup.files = backup.target.get_files() expected_count = len(class_names) * len(date_ids) self.assertEqual(len(list(backup.files)), expected_count) # run auto clean autoclean(True) # assert some files were deleted backup = Backup() backup.files = backup.target.get_files() white_list = [ '20140425202739', '20130808133229', '20120419224811', '20111015194547', '20100112115416', '20090927181422', '20070611090332', '20060519170013', '20050413201344' ] expected_count = len(class_names) * len(white_list) self.assertEqual(len(list(backup.files)), expected_count) # assert only white listed files exists, # and only black listed were deleted backup = Backup() backup.files = tuple(backup.target.get_files()) self.assertEqual(sorted(white_list), sorted(backup.get_timestamps())) # clean up to avoid messing up other tests backup = Backup() backup.files = backup.target.get_files() for name in backup.files: backup.target.delete_file(name) backup = Backup() backup.files = backup.target.get_files() self.assertEqual(len(list(backup.files)), 0)
def backup_cycle(self): lasttime = self.lastBackupTime now = datetime.datetime.now() compare_time = lasttime.replace(hour=4, minute=35, second=0, microsecond=0) if compare_time > lasttime: next_time = compare_time else: next_time = compare_time + datetime.timedelta(days=1) if now > next_time or self.forceBackup == True: self.forceBackup = False print "Doing a backup (" + str(datetime.datetime.now()) + ")" with app.app_context(): flask_alchemydumps.autoclean(True) flask_alchemydumps.create() if config.BACKUP_ENABLE_FTP == True: print "Doing a additional FTP backup" app.config["ALCHEMYDUMPS_FTP_SERVER"] = "" app.config["ALCHEMYDUMPS_FTP_USER"] = "" app.config["ALCHEMYDUMPS_FTP_PASSWORD"] = "" app.config["ALCHEMYDUMPS_FTP_PATH"] = "" flask_alchemydumps.create() app.config["ALCHEMYDUMPS_FTP_SERVER"] = config.ALCHEMYDUMPS_FTP_SERVER app.config["ALCHEMYDUMPS_FTP_USER"] = config.ALCHEMYDUMPS_FTP_USER app.config["ALCHEMYDUMPS_FTP_PASSWORD"] = config.ALCHEMYDUMPS_FTP_PASSWORD app.config["ALCHEMYDUMPS_FTP_PATH"] = config.ALCHEMYDUMPS_FTP_PATH print "Next backup @" + str(next_time) + " (" + str(datetime.datetime.now()) + ")" logentry = Action( datetime.datetime.utcnow(), config.NODE_NAME, "Sync Master", "*****@*****.**", "Backup database", "Backup", "L1", 0, "Internal", ) db.session.add(logentry) db.session.commit() self.lastBackupTime = now
def backup(): ''' Backup the db ''' create() autoclean()