diff --git a/src/borg/archive.py b/src/borg/archive.py index 6571b0cf63..dcc85deef1 100644 --- a/src/borg/archive.py +++ b/src/borg/archive.py @@ -711,6 +711,8 @@ def save(self, name=None, comment=None, timestamp=None, stats=None, additional_m stats = stats or self.stats metadata |= {"size": stats.osize, "nfiles": stats.nfiles} metadata |= additional_metadata or {} + if metadata.get("cwd") is None: + del metadata["cwd"] metadata = ArchiveItem(metadata) data = self.key.pack_metadata(metadata.as_dict()) self.id = self.repo_objs.id_hash(data) diff --git a/src/borg/testsuite/archiver/transfer_cmd_test.py b/src/borg/testsuite/archiver/transfer_cmd_test.py index 7255b683bc..57f524de3c 100644 --- a/src/borg/testsuite/archiver/transfer_cmd_test.py +++ b/src/borg/testsuite/archiver/transfer_cmd_test.py @@ -363,6 +363,7 @@ def test_transfer_archive_metadata(archivers, request, monkeypatch): assert dest_archive["hostname"] == source_archive["hostname"] assert dest_archive["username"] == source_archive["username"] assert dest_archive["command_line"] == source_archive["command_line"] + assert dest_archive["cwd"] == source_archive["cwd"] assert dest_archive["duration"] == source_archive["duration"] assert dest_archive["start"] == source_archive["start"] assert dest_archive["end"] == source_archive["end"] diff --git a/src/borg/upgrade.py b/src/borg/upgrade.py index a7b3f00df1..2c562b4691 100644 --- a/src/borg/upgrade.py +++ b/src/borg/upgrade.py @@ -39,6 +39,7 @@ def upgrade_archive_metadata(self, *, metadata): ): if hasattr(metadata, attr): new_metadata[attr] = getattr(metadata, attr) + new_metadata["cwd"] = getattr(metadata, "cwd", None) # None signals save() to leave cwd unset rechunking = self.args.chunker_params is not None if rechunking: # if we are rechunking while transferring, we take the new chunker_params. @@ -152,6 +153,8 @@ def upgrade_archive_metadata(self, *, metadata): for attr in ("hostname", "username", "comment", "chunker_params"): if hasattr(metadata, attr): new_metadata[attr] = getattr(metadata, attr) + # if cwd is None, we want to drop it from metadata, so we set it to None here, and save() will drop it. + new_metadata["cwd"] = getattr(metadata, "cwd", None) rechunking = self.args.chunker_params is not None if rechunking: # if we are rechunking while transferring, we take the new chunker_params.