def doPrepareListBackups(self, *args, **kwargs): from storage import backup_rebuilder if backup_control.HasRunningBackup(): # if some backups are running right now no need to rebuild something - too much use of CPU backup_rebuilder.RemoveAllBackupsToWork() lg.out(6, 'backup_monitor.doPrepareListBackups skip all rebuilds') self.automat('list-backups-done') return # take remote and local backups and get union from it allBackupIDs = set( list(backup_matrix.local_files().keys()) + list(backup_matrix.remote_files().keys())) # take only backups from data base allBackupIDs.intersection_update(backup_fs.ListAllBackupIDs()) # remove running backups allBackupIDs.difference_update(backup_control.ListRunningBackups()) # sort it in reverse order - newer backups should be repaired first allBackupIDs = misc.sorted_backup_ids(list(allBackupIDs), True) # add backups to the queue backup_rebuilder.AddBackupsToWork(allBackupIDs) lg.out( 6, 'backup_monitor.doPrepareListBackups %d items:' % len(allBackupIDs)) lg.out(6, ' %s' % allBackupIDs) self.automat('list-backups-done', allBackupIDs)
def DeleteAllBackups(): """ Remove all backup IDs from index data base, see ``DeleteBackup()`` method. """ # prepare a list of all known backup IDs all_ids = set(backup_fs.ListAllBackupIDs()) all_ids.update(backup_matrix.GetBackupIDs(remote=True, local=True)) lg.out(4, 'backup_control.DeleteAllBackups %d ID\'s to kill' % len(all_ids)) # delete one by one for backupID in all_ids: DeleteBackup(backupID, saveDB=False, calculate=False) # scan all files backup_fs.Scan() # check and calculate used space backup_fs.Calculate() # save the index Save() # refresh the GUI control.request_update()