У меня есть это поврежденное репо, созданное с помощью сломанного пакета Fedora23 на ppc64, где вскоре после запуска произошел сбой.
Теперь и удаление borg, и проверка borg действительно недовольны этим репо, даже после того, как я сделал для него взлом borg и удалил теперь устаревшую блокировку.
Образец прилагаю. который является tar внутри zip, поскольку github, по-видимому, не поддерживает файлы tar.gz.
borg-repo.tar.zip
Я получаю следующие ошибки:
[root<strong i="11">@powermac</strong> ~]# borg delete localhost:/tmp/backup
root<strong i="12">@localhost</strong>'s password:
Remote: Borg 1.0.2: exception in RPC call:
Remote: Traceback (most recent call last):
Remote: File "/usr/lib64/python3.4/site-packages/borg/remote.py", line 96, in serve
Remote: res = f(*args)
Remote: File "/usr/lib64/python3.4/site-packages/borg/repository.py", line 447, in get
Remote: raise self.ObjectNotFound(id_, self.path) from None
Remote: borg.repository.ObjectNotFound: (b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00', '/tmp/backup')
Remote: Platform: Linux powermac.localnet 4.4.8-300.fc23.ppc64 #1 SMP Wed Apr 27 17:14:46 UTC 2016 ppc64 ppc64
Remote: Linux: Fedora 23 Twenty Three
Remote: Borg: 1.0.2 Python: CPython 3.4.3
Remote: PID: 22394 CWD: /root
Remote: sys.argv: ['/usr/bin/borg', 'serve', '--umask=077']
Remote: SSH_ORIGINAL_COMMAND: None
Remote:
Object with key 82 not found in repository localhost:/tmp/backup.
Traceback (most recent call last):
File "/usr/lib64/python3.4/site-packages/borg/archiver.py", line 1498, in main
exit_code = archiver.run(args)
File "/usr/lib64/python3.4/site-packages/borg/archiver.py", line 1452, in run
return args.func(args)
File "/usr/lib64/python3.4/site-packages/borg/archiver.py", line 74, in wrapper
kwargs['manifest'], kwargs['key'] = Manifest.load(repository)
File "/usr/lib64/python3.4/site-packages/borg/helpers.py", line 93, in load
cdata = repository.get(cls.MANIFEST_ID)
File "/usr/lib64/python3.4/site-packages/borg/remote.py", line 354, in get
for resp in self.get_many([id_]):
File "/usr/lib64/python3.4/site-packages/borg/remote.py", line 358, in get_many
for resp in self.call_many('get', [(id_,) for id_ in ids], is_preloaded=is_preloaded):
File "/usr/lib64/python3.4/site-packages/borg/remote.py", line 263, in call_many
raise Repository.ObjectNotFound(res[0], self.location.orig)
borg.repository.ObjectNotFound: (82, 'localhost:/tmp/backup')
Platform: Linux powermac.localnet 4.4.8-300.fc23.ppc64 #1 SMP Wed Apr 27 17:14:46 UTC 2016 ppc64 ppc64
Linux: Fedora 23 Twenty Three
Borg: 1.0.2 Python: CPython 3.4.3
PID: 22374 CWD: /root
sys.argv: ['/usr/bin/borg', 'delete', 'localhost:/tmp/backup']
SSH_ORIGINAL_COMMAND: None
[root<strong i="13">@powermac</strong> ~]# borg check localhost:/tmp/backup
root<strong i="14">@localhost</strong>'s password:
Local Exception.
Traceback (most recent call last):
File "/usr/lib64/python3.4/site-packages/borg/archiver.py", line 1498, in main
exit_code = archiver.run(args)
File "/usr/lib64/python3.4/site-packages/borg/archiver.py", line 1452, in run
return args.func(args)
File "/usr/lib64/python3.4/site-packages/borg/archiver.py", line 80, in wrapper
return method(self, args, repository=repository, **kwargs)
File "/usr/lib64/python3.4/site-packages/borg/archiver.py", line 147, in do_check
last=args.last, prefix=args.prefix, save_space=args.save_space):
File "/usr/lib64/python3.4/site-packages/borg/archive.py", line 663, in check
self.key = self.identify_key(repository)
File "/usr/lib64/python3.4/site-packages/borg/archive.py", line 696, in identify_key
cdata = repository.get(next(self.chunks.iteritems())[0])
File "borg/hashindex.pyx", line 341, in borg.hashindex.ChunkKeyIterator.__next__ (borg/hashindex.c:5407)
StopIteration
Platform: Linux powermac.localnet 4.4.8-300.fc23.ppc64 #1 SMP Wed Apr 27 17:14:46 UTC 2016 ppc64 ppc64
Linux: Fedora 23 Twenty Three
Borg: 1.0.2 Python: CPython 3.4.3
PID: 22419 CWD: /root
sys.argv: ['/usr/bin/borg', 'check', 'localhost:/tmp/backup']
SSH_ORIGINAL_COMMAND: None
Репозиторий полностью пуст (без сегментов), отсюда и сбой "проверки борга". Другие команды выдают эту ошибку:
borg.repository.Repository.ObjectNotFound: (
b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00',
'/home/mabe/Projekte/_oss/borg/green1043')
Вы показываете интересную ошибку:
borg.repository.ObjectNotFound: (82, 'localhost:/tmp/backup')
Верно.
Я полагаю, что это довольно хорошо известное состояние для полностью пустого состояния, и, возможно, такое утверждение - не самый лучший способ справиться с ним?
Да, следует добавить проверку, которая прерывается раньше и с более четким сообщением об ошибке при открытии репозитория без фиксации.
Я исправил это как можно лучше: