Browse Source

recreate: unify --always-recompress and --recompress

Marian Beermann 8 years ago
parent
commit
dcfbd39125
1 changed files with 10 additions and 8 deletions
  1. 10 8
      src/borg/archiver.py

+ 10 - 8
src/borg/archiver.py

@@ -1323,11 +1323,13 @@ class Archiver:
         matcher, include_patterns = self.build_matcher(args.patterns, args.paths)
         matcher, include_patterns = self.build_matcher(args.patterns, args.paths)
         self.output_list = args.output_list
         self.output_list = args.output_list
         self.output_filter = args.output_filter
         self.output_filter = args.output_filter
+        recompress = args.recompress != 'never'
+        always_recompress = args.recompress == 'always'
 
 
         recreater = ArchiveRecreater(repository, manifest, key, cache, matcher,
         recreater = ArchiveRecreater(repository, manifest, key, cache, matcher,
                                      exclude_caches=args.exclude_caches, exclude_if_present=args.exclude_if_present,
                                      exclude_caches=args.exclude_caches, exclude_if_present=args.exclude_if_present,
                                      keep_exclude_tags=args.keep_exclude_tags, chunker_params=args.chunker_params,
                                      keep_exclude_tags=args.keep_exclude_tags, chunker_params=args.chunker_params,
-                                     compression=args.compression, recompress=args.recompress, always_recompress=args.always_recompress,
+                                     compression=args.compression, recompress=recompress, always_recompress=always_recompress,
                                      progress=args.progress, stats=args.stats,
                                      progress=args.progress, stats=args.stats,
                                      file_status_printer=self.print_file_status,
                                      file_status_printer=self.print_file_status,
                                      checkpoint_interval=args.checkpoint_interval,
                                      checkpoint_interval=args.checkpoint_interval,
@@ -2922,8 +2924,7 @@ class Archiver:
         Note that all paths in an archive are relative, therefore absolute patterns/paths
         Note that all paths in an archive are relative, therefore absolute patterns/paths
         will *not* match (--exclude, --exclude-from, PATHs).
         will *not* match (--exclude, --exclude-from, PATHs).
 
 
-        --recompress: all chunks seen will be recompressed using the --compression
-        specified.
+        --recompress allows to change the compression of existing data in archives.
         Due to how Borg stores compressed size information this might display
         Due to how Borg stores compressed size information this might display
         incorrect information for archives that were not recreated at the same time.
         incorrect information for archives that were not recreated at the same time.
         There is no risk of data loss by this.
         There is no risk of data loss by this.
@@ -3013,11 +3014,12 @@ class Archiver:
                                    type=CompressionSpec, default=CompressionSpec('lz4'), metavar='COMPRESSION',
                                    type=CompressionSpec, default=CompressionSpec('lz4'), metavar='COMPRESSION',
                                    help='select compression algorithm, see the output of the '
                                    help='select compression algorithm, see the output of the '
                                         '"borg help compression" command for details.')
                                         '"borg help compression" command for details.')
-        archive_group.add_argument('--recompress', dest='recompress', action='store_true',
-                                   help='recompress chunks according to --compression.')
-        archive_group.add_argument('--always-recompress', dest='always_recompress', action='store_true',
-                                   help='always recompress chunks, don\'t skip chunks already compressed with the same '
-                                        'algorithm.')
+        archive_group.add_argument('--recompress', dest='recompress', nargs='?', default='never', const='if-different',
+                                   choices=('never', 'if-different', 'always'),
+                                   help='recompress data chunks according to --compression if "if-different". '
+                                        'When "always", chunks that are already compressed that way are not skipped, '
+                                        'but compressed again. Only the algorithm is considered for "if-different", '
+                                        'not the compression level (if any).')
         archive_group.add_argument('--chunker-params', dest='chunker_params',
         archive_group.add_argument('--chunker-params', dest='chunker_params',
                                    type=ChunkerParams, default=CHUNKER_PARAMS,
                                    type=ChunkerParams, default=CHUNKER_PARAMS,
                                    metavar='PARAMS',
                                    metavar='PARAMS',