def run(self, cmd, opts, *backups): error = 0 if not backups: LOG.info("No backupsets specified - using backupsets from %s", HOLLANDCFG.filename) backups = HOLLANDCFG.lookup("holland.backupsets") if not backups: LOG.warning("Nothing to purge") return 0 if not opts.force: LOG.warning("Running in dry-run mode. Use --execute to do a real purge.") for name in backups: if "/" not in name: backupset = SPOOL.find_backupset(name) if not backupset: LOG.error("Failed to find backupset '%s'", name) error = 1 continue purge_backupset(backupset, opts.force, opts.all) else: backup = SPOOL.find_backup(name) if not backup: LOG.error("Failed to find single backup '%s'", name) error = 1 continue purge_backup(backup, opts.force) if opts.force: SPOOL.find_backupset(backup.backupset).update_symlinks() return error
def run(self, cmd, opts, *backups): error = 0 if not backups: LOG.info("No backupsets specified - using backupsets from %s", HOLLANDCFG.filename) backups = HOLLANDCFG.lookup("holland.backupsets") if not backups: LOG.warning("Nothing to purge") return 0 if not opts.force: LOG.warning( "Running in dry-run mode. Use --execute to do a real purge.") for name in backups: if "/" not in name: backupset = SPOOL.find_backupset(name) if not backupset: LOG.error("Failed to find backupset '%s'", name) error = 1 continue purge_backupset(backupset, opts.force, opts.all) else: backup = SPOOL.find_backup(name) if not backup: LOG.error("Failed to find single backup '%s'", name) error = 1 continue purge_backup(backup, opts.force) if opts.force: SPOOL.find_backupset(backup.backupset).update_symlinks() return error
def run(self, cmd, opts, *args): """ get backup informantion and call print table """ if args: print("The list-backup command takes no arguments", file=sys.stderr) backup_list = list(SPOOL.list_backups()) if not backup_list: print("No backups") return 0 backupsets_seen = [] for backup in backup_list: if backup.backupset not in backupsets_seen: backupsets_seen.append(backup.backupset) print("Backupset[%s]:" % (backup.backupset)) # Read the backup.conf backup.load_config() plugin_name = backup.config.get("holland:backup", {})["plugin"] if not plugin_name: print("Skipping broken backup: %s" % backup.name) continue print("\t%s" % backup.name) if opts.verbose: print("\t", backup.info()) plugin = load_backup_plugin(plugin_name) plugin = plugin(backup.backupset, backup.config, backup.path) if hasattr(plugin, "info"): plugin_info = plugin.info() rec = re.compile(r"^", re.M) print(rec.sub("\t\t", plugin_info)) return 0
def __call__(self, event, entry): purge_policy = entry.config["holland:backup"]["purge-policy"] if event == "before-backup" and purge_policy != "before-backup": return if event == "after-backup" and purge_policy != "after-backup": return backupset = SPOOL.find_backupset(entry.backupset) if not backupset: LOG.info("Nothing to purge") return retention_count = entry.config["holland:backup"]["backups-to-keep"] retention_count = int(retention_count) if event == "after-backup" and retention_count == 0: # Always maintain latest backup LOG.warning( "!! backups-to-keep set to 0, but " "purge-policy = after-backup. This would immediately " "purge all backups which is probably not intended. " "Setting backups-to-keep to 1" ) retention_count = 1 if event == "before-backup": retention_count += 1 self.purge_backupset(backupset, retention_count) backupset.update_symlinks()
def __call__(self, event, entry): purge_policy = entry.config['holland:backup']['purge-policy'] if event == 'before-backup' and purge_policy != 'before-backup': return if event == 'after-backup' and purge_policy != 'after-backup': return backupset = SPOOL.find_backupset(entry.backupset) if not backupset: LOG.info("Nothing to purge") return retention_count = entry.config['holland:backup']['backups-to-keep'] retention_count = int(retention_count) if event == 'after-backup' and retention_count == 0: # Always maintain latest backup LOG.warning("!! backups-to-keep set to 0, but " "purge-policy = after-backup. This would immediately " "purge all backups which is probably not intended. " "Setting backups-to-keep to 1") retention_count = 1 if event == 'before-backup': retention_count += 1 self.purge_backupset(backupset, retention_count) backupset.update_symlinks()
def run(self, cmd, opts, *args): """ get backup informantion and call print table """ if args: print("The list-backup command takes no arguments", file=sys.stderr) backup_list = [x for x in SPOOL.list_backups()] if not backup_list: print("No backups") return 0 backupsets_seen = [] for backup in backup_list: if backup.backupset not in backupsets_seen: backupsets_seen.append(backup.backupset) print("Backupset[%s]:" % (backup.backupset)) # Read the backup.conf backup.load_config() plugin_name = backup.config.get("holland:backup", {})["plugin"] if not plugin_name: print("Skipping broken backup: %s" % backup.name) continue print("\t%s" % backup.name) if opts.verbose: print("\t", backup.info()) plugin = load_backup_plugin(plugin_name) plugin = plugin(backup.backupset, backup.config, backup.path) if hasattr(plugin, "info"): plugin_info = plugin.info() import re rec = re.compile(r"^", re.M) print(rec.sub("\t\t", plugin_info)) return 0
def run(self, cmd, opts, *args): backup = SPOOL.find_backup(args[0]) if not backup: logging.error("No backup found named %s", args[0]) return 1 config = backup.config plugin_name = config.get('holland:backup', {}).get('plugin') plugin = load_first_entrypoint('holland.restore', plugin_name)(backup) plugin.dispatch([plugin_name] + list(args)) return 1