diff --git a/src/borg/archiver.py b/src/borg/archiver.py index 2d2b204f1..e5bc3a8f5 100644 --- a/src/borg/archiver.py +++ b/src/borg/archiver.py @@ -1040,6 +1040,10 @@ def do_prune(self, args, repository, manifest, key): stats = Statistics() with Cache(repository, key, manifest, do_files=args.cache_files, lock_wait=self.lock_wait) as cache: list_logger = logging.getLogger('borg.output.list') + if args.output_list: + # set up counters for the progress display + to_delete_len = len(to_delete) + archives_deleted = 0 for archive in archives_checkpoints: if archive in to_delete: if args.dry_run: @@ -1047,8 +1051,11 @@ def do_prune(self, args, repository, manifest, key): list_logger.info('Would prune: %s' % format_archive(archive)) else: if args.output_list: - list_logger.info('Pruning archive: %s' % format_archive(archive)) - Archive(repository, key, manifest, archive.name, cache).delete(stats, forced=args.forced) + archives_deleted += 1 + list_logger.info('Pruning archive: %s (%d/%d)' % (format_archive(archive), + archives_deleted, to_delete_len)) + Archive(repository, key, manifest, archive.name, cache, + progress=args.progress).delete(stats, forced=args.forced) else: if args.output_list: list_logger.info('Keeping archive: %s' % format_archive(archive)) @@ -2324,6 +2331,9 @@ def build_parser(self, prog=None): subparser.add_argument('--force', dest='forced', action='store_true', default=False, help='force pruning of corrupted archives') + subparser.add_argument('-p', '--progress', dest='progress', + action='store_true', default=False, + help='show progress display while deleting archives') subparser.add_argument('-s', '--stats', dest='stats', action='store_true', default=False, help='print statistics for the deleted archive')