From bca36db0a1c8e0de12ade11c564e01efb1318a6f Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Thu, 8 Sep 2022 23:27:19 +0200 Subject: [PATCH 1/2] transfer: fix csize/psize for obfuscated chunks --- src/borg/upgrade.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/borg/upgrade.py b/src/borg/upgrade.py index 6a9fd4460..b0c608a52 100644 --- a/src/borg/upgrade.py +++ b/src/borg/upgrade.py @@ -123,8 +123,10 @@ class UpgraderFrom12To20: csize = borg1_header_fmt.unpack(csize_bytes) compressed = data[2 + hlen : 2 + hlen + csize] meta, compressed = upgrade_zlib_and_level(meta, compressed) + meta["psize"] = csize osize = len(data) - 2 - hlen - csize # amount of 0x00 bytes appended for obfuscation data = compressed + bytes(osize) + meta["csize"] = len(data) else: meta, data = upgrade_zlib_and_level(meta, data) return meta, data From f647fa9f0812af78e7140e54865d40bcbdd88b95 Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Fri, 9 Sep 2022 00:53:08 +0200 Subject: [PATCH 2/2] transfer: check if correct upgrader class is used for v1 repos --- src/borg/archiver/transfer_cmd.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/borg/archiver/transfer_cmd.py b/src/borg/archiver/transfer_cmd.py index 663a9244a..271141188 100644 --- a/src/borg/archiver/transfer_cmd.py +++ b/src/borg/archiver/transfer_cmd.py @@ -4,7 +4,7 @@ from ._common import with_repository, with_other_repository from ..archive import Archive from ..constants import * # NOQA from ..crypto.key import uses_same_id_hash, uses_same_chunker_secret -from ..helpers import EXIT_SUCCESS, EXIT_ERROR +from ..helpers import EXIT_SUCCESS, EXIT_ERROR, Error from ..helpers import location_validator, Location from ..helpers import format_file_size from ..manifest import Manifest @@ -47,6 +47,9 @@ class TransferMixIn: self.print_error(f"No such upgrader: {args.upgrader}") return EXIT_ERROR + if UpgraderCls is not upgrade_mod.UpgraderFrom12To20 and other_manifest.repository.version == 1: + raise Error("To transfer from a borg 1.x repo, you need to use: --upgrader=From12To20") + upgrader = UpgraderCls(cache=cache) for name in archive_names: