From 7bc7f013427edeff45b3f051b7ac0bd47563975c Mon Sep 17 00:00:00 2001 From: Thomas Waldmann Date: Wed, 13 Jul 2022 16:55:29 +0200 Subject: [PATCH] remove remainders of attic legacy we expect that everybody has upgraded to borg using borg 1.2.x or older, thus we do not need to care about attic repos any more in borg2. --- src/borg/archive.py | 2 +- src/borg/archiver/recreate.py | 3 +-- src/borg/constants.py | 2 +- src/borg/remote.py | 5 ----- src/borg/repository.py | 13 ------------- src/borg/testsuite/crypto.py | 2 +- src/borg/upgrade.py | 2 +- 7 files changed, 5 insertions(+), 24 deletions(-) diff --git a/src/borg/archive.py b/src/borg/archive.py index d346a425f..f6a7a900d 100644 --- a/src/borg/archive.py +++ b/src/borg/archive.py @@ -1080,7 +1080,7 @@ class MetadataCollector: def stat_simple_attrs(self, st): attrs = dict(mode=st.st_mode, uid=st.st_uid, gid=st.st_gid, mtime=safe_ns(st.st_mtime_ns)) - # borg can work with archives only having mtime (older attic archives do not have + # borg can work with archives only having mtime (very old borg archives do not have # atime/ctime). it can be useful to omit atime/ctime, if they change without the # file content changing - e.g. to get better metadata deduplication. if not self.noatime: diff --git a/src/borg/archiver/recreate.py b/src/borg/archiver/recreate.py index 0aef1d29b..3a0a64dbd 100644 --- a/src/borg/archiver/recreate.py +++ b/src/borg/archiver/recreate.py @@ -89,8 +89,7 @@ class RecreateMixIn: There is no risk of data loss by this. ``--chunker-params`` will re-chunk all files in the archive, this can be - used to have upgraded Borg 0.xx or Attic archives deduplicate with - Borg 1.x archives. + used to have upgraded Borg 0.xx archives deduplicate with Borg 1.x archives. **USE WITH CAUTION.** Depending on the PATHs and patterns given, recreate can be used to permanently diff --git a/src/borg/constants.py b/src/borg/constants.py index a7406a63f..b5a001518 100644 --- a/src/borg/constants.py +++ b/src/borg/constants.py @@ -135,7 +135,7 @@ class KeyType: # in borg 2. all of its code and also the "borg key migrate-to-repokey" command was removed. # if you still need to, you can use "borg key migrate-to-repokey" with borg 1.0, 1.1 and 1.2. # Nowadays, we just dispatch this to RepoKey and assume the passphrase was migrated to a repokey. - PASSPHRASE = 0x01 # legacy, attic and borg < 1.0 + PASSPHRASE = 0x01 # legacy, borg < 1.0 PLAINTEXT = 0x02 REPO = 0x03 BLAKE2KEYFILE = 0x04 diff --git a/src/borg/remote.py b/src/borg/remote.py index f3b7ef6f0..d841109e1 100644 --- a/src/borg/remote.py +++ b/src/borg/remote.py @@ -791,11 +791,6 @@ This problem will go away as soon as the server has been upgraded to 1.0.7+. raise IntegrityError("(not available)") else: raise IntegrityError(args[0]) - elif error == "AtticRepository": - if old_server: - raise Repository.AtticRepository("(not available)") - else: - raise Repository.AtticRepository(args[0]) elif error == "PathNotAllowed": if old_server: raise PathNotAllowed("(unknown)") diff --git a/src/borg/repository.py b/src/borg/repository.py index 3a05b09ef..38a1b93ac 100644 --- a/src/borg/repository.py +++ b/src/borg/repository.py @@ -32,8 +32,6 @@ logger = create_logger(__name__) MAGIC = b"BORG_SEG" MAGIC_LEN = len(MAGIC) -ATTIC_MAGIC = b"ATTICSEG" -assert len(ATTIC_MAGIC) == MAGIC_LEN TAG_PUT = 0 TAG_DELETE = 1 @@ -152,9 +150,6 @@ class Repository: class InvalidRepositoryConfig(Error): """{} does not have a valid configuration. Check repo config [{}].""" - class AtticRepository(Error): - """Attic repository detected. Please use borg <= 1.2 to run "borg upgrade {}".""" - class CheckNeeded(ErrorWithTraceback): """Inconsistency detected. Please run "borg check {}".""" @@ -181,7 +176,6 @@ class Repository: lock=True, append_only=False, storage_quota=None, - check_segment_magic=True, make_parent_dirs=False, ): self.path = os.path.abspath(path) @@ -205,7 +199,6 @@ class Repository: self.storage_quota = storage_quota self.storage_quota_use = 0 self.transaction_doomed = None - self.check_segment_magic = check_segment_magic self.make_parent_dirs = make_parent_dirs # v2 is the default repo version for borg 2.0 # v1 repos must only be used in a read-only way, e.g. for @@ -498,12 +491,6 @@ class Repository: self.storage_quota = parse_file_size(self.config.get("repository", "storage_quota", fallback=0)) self.id = unhexlify(self.config.get("repository", "id").strip()) self.io = LoggedIO(self.path, self.max_segment_size, self.segments_per_dir) - if self.check_segment_magic: - # read a segment and check whether we are dealing with a non-upgraded Attic repository - segment = self.io.get_latest_segment() - if segment is not None and self.io.get_segment_magic(segment) == ATTIC_MAGIC: - self.close() - raise self.AtticRepository(path) def info(self): """return some infos about the repo (must be opened first)""" diff --git a/src/borg/testsuite/crypto.py b/src/borg/testsuite/crypto.py index 78a6c8949..6ab7be026 100644 --- a/src/borg/testsuite/crypto.py +++ b/src/borg/testsuite/crypto.py @@ -34,7 +34,7 @@ class CryptoTestCase(BaseTestCase): self.assert_equal(got_data, data) def test_AES256_CTR_HMAC_SHA256(self): - # this tests the layout as in attic / borg < 1.2 (1 type byte, no aad) + # this tests the layout as in borg < 1.2 (1 type byte, no aad) mac_key = b"Y" * 32 enc_key = b"X" * 32 iv = 0 diff --git a/src/borg/upgrade.py b/src/borg/upgrade.py index 329fa7983..68ba59f27 100644 --- a/src/borg/upgrade.py +++ b/src/borg/upgrade.py @@ -102,7 +102,7 @@ class UpgraderFrom12To20: def upgrade_zlib_and_level(chunk): if ZLIB_legacy.detect(chunk): ctype = ZLIB.ID - chunk = ctype + level + bytes(chunk) # get rid of the attic legacy: prepend separate type/level bytes + chunk = ctype + level + bytes(chunk) # get rid of the legacy: prepend separate type/level bytes else: ctype = bytes(chunk[0:1]) chunk = ctype + level + bytes(chunk[2:]) # keep type same, but set level