2
0
Эх сурвалжийг харах

archive.save(): always use metadata from stats, fixes #7072

e.g. nfiles, size, etc.

fixes:
- checkpoint archives did not have this metadata yet
- borg import-tar did not have this metadata yet
Thomas Waldmann 2 жил өмнө
parent
commit
f6419ee28b
2 өөрчлөгдсөн 13 нэмэгдсэн , 11 устгасан
  1. 12 10
      src/borg/archive.py
  2. 1 1
      src/borg/archiver.py

+ 12 - 10
src/borg/archive.py

@@ -632,14 +632,17 @@ Utilization of max. archive size: {csize_max:.0%}
             'time_end': end.strftime(ISO_FORMAT),
             'chunker_params': self.chunker_params,
         }
-        if stats is not None:
-            metadata.update({
-                'size': stats.osize,
-                'csize': stats.csize,
-                'nfiles': stats.nfiles,
-                'size_parts': stats.osize_parts,
-                'csize_parts': stats.csize_parts,
-                'nfiles_parts': stats.nfiles_parts})
+        # we always want to create archives with the addtl. metadata (nfiles, etc.),
+        # because borg info relies on them. so, either use the given stats (from args)
+        # or fall back to self.stats if it was not given.
+        stats = stats or self.stats
+        metadata.update({
+            'size': stats.osize,
+            'csize': stats.csize,
+            'nfiles': stats.nfiles,
+            'size_parts': stats.osize_parts,
+            'csize_parts': stats.csize_parts,
+            'nfiles_parts': stats.nfiles_parts})
         metadata.update(additional_metadata or {})
         metadata = ArchiveItem(metadata)
         data = self.key.pack_and_authenticate_metadata(metadata.as_dict(), context=b'archive')
@@ -2242,8 +2245,7 @@ class ArchiveRecreater:
                 'recreate_cmdline': sys.argv,
             }
 
-        target.save(comment=comment, timestamp=self.timestamp,
-                    stats=target.stats, additional_metadata=additional_metadata)
+        target.save(comment=comment, timestamp=self.timestamp, additional_metadata=additional_metadata)
         if replace_original:
             archive.delete(Statistics(), progress=self.progress)
             target.rename(archive.name)

+ 1 - 1
src/borg/archiver.py

@@ -626,7 +626,7 @@ class Archiver:
                     # we already have a checkpoint archive in this case.
                     self.print_error("Got Ctrl-C / SIGINT.")
                 else:
-                    archive.save(comment=args.comment, timestamp=args.timestamp, stats=archive.stats)
+                    archive.save(comment=args.comment, timestamp=args.timestamp)
                     args.stats |= args.json
                     if args.stats:
                         if args.json: