|
@@ -1,56 +0,0 @@
|
|
|
-import os
|
|
|
-
|
|
|
-from .crypto.key import KeyfileKey, KeyfileNotFoundError
|
|
|
-from .helpers import get_base_dir, get_keys_dir
|
|
|
-from .logger import create_logger
|
|
|
-from .repository import Repository
|
|
|
-
|
|
|
-logger = create_logger(__name__)
|
|
|
-
|
|
|
-
|
|
|
-class BorgRepositoryUpgrader(Repository):
|
|
|
- def upgrade(self, dryrun=True, inplace=False, progress=False):
|
|
|
- """convert an old borg repository to a current borg repository
|
|
|
- """
|
|
|
- logger.info("converting borg 0.xx to borg current")
|
|
|
- with self:
|
|
|
- try:
|
|
|
- keyfile = self.find_borg0xx_keyfile()
|
|
|
- except KeyfileNotFoundError:
|
|
|
- logger.warning("no key file found for repository")
|
|
|
- else:
|
|
|
- self.move_keyfiles(keyfile, dryrun)
|
|
|
-
|
|
|
- def find_borg0xx_keyfile(self):
|
|
|
- return Borg0xxKeyfileKey.find_key_file(self)
|
|
|
-
|
|
|
- def move_keyfiles(self, keyfile, dryrun):
|
|
|
- filename = os.path.basename(keyfile)
|
|
|
- new_keyfile = os.path.join(get_keys_dir(), filename)
|
|
|
- try:
|
|
|
- os.rename(keyfile, new_keyfile)
|
|
|
- except FileExistsError:
|
|
|
- pass
|
|
|
-
|
|
|
-
|
|
|
-class Borg0xxKeyfileKey(KeyfileKey):
|
|
|
- """backwards compatible borg 0.xx key file parser"""
|
|
|
-
|
|
|
- @staticmethod
|
|
|
- def get_keys_dir():
|
|
|
- return os.environ.get('BORG_KEYS_DIR',
|
|
|
- os.path.join(get_base_dir(), '.borg', 'keys'))
|
|
|
-
|
|
|
- @classmethod
|
|
|
- def find_key_file(cls, repository):
|
|
|
- get_keys_dir = cls.get_keys_dir
|
|
|
- keys_dir = get_keys_dir()
|
|
|
- if not os.path.exists(keys_dir):
|
|
|
- raise KeyfileNotFoundError(repository.path, keys_dir)
|
|
|
- for name in os.listdir(keys_dir):
|
|
|
- filename = os.path.join(keys_dir, name)
|
|
|
- with open(filename) as fd:
|
|
|
- line = fd.readline().strip()
|
|
|
- if line and line.startswith(cls.FILE_ID) and line[len(cls.FILE_ID) + 1:] == repository.id_str:
|
|
|
- return filename
|
|
|
- raise KeyfileNotFoundError(repository.path, keys_dir)
|