Browse Source

Merge pull request #7074 from ThomasWaldmann/fix-nfiles-master

archive.save(): always use metadata from stats, fixes #7072
TW 2 years ago
parent
commit
349b4905ce
3 changed files with 15 additions and 14 deletions
  1. 13 12
      src/borg/archive.py
  2. 1 1
      src/borg/archiver/create_cmd.py
  3. 1 1
      src/borg/archiver/transfer_cmd.py

+ 13 - 12
src/borg/archive.py

@@ -653,15 +653,18 @@ Duration: {0.duration}
             "time_end": end.isoformat(timespec="microseconds"),
             "chunker_params": self.chunker_params,
         }
-        if stats is not None:
-            metadata.update(
-                {
-                    "size": stats.osize,
-                    "nfiles": stats.nfiles,
-                    "size_parts": stats.osize_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,
+                "nfiles": stats.nfiles,
+                "size_parts": stats.osize_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")
@@ -2320,9 +2323,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/create_cmd.py

@@ -190,7 +190,7 @@ class CreateMixIn:
                     # 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:

+ 1 - 1
src/borg/archiver/transfer_cmd.py

@@ -100,7 +100,7 @@ class TransferMixIn:
                         archive.add_item(upgrader.upgrade_item(item=item))
                 if not dry_run:
                     additional_metadata = upgrader.upgrade_archive_metadata(metadata=other_archive.metadata)
-                    archive.save(stats=archive.stats, additional_metadata=additional_metadata)
+                    archive.save(additional_metadata=additional_metadata)
                     print(
                         f"{name}: finished. "
                         f"transfer_size: {format_file_size(transfer_size)} "