Borg: Поврежденное репо вызывает проверку borg, сбой при удалении

Созданный на 15 мая 2016  ·  4Комментарии  ·  Источник: borgbackup/borg

У меня есть это поврежденное репо, созданное с помощью сломанного пакета 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

Все 4 Комментарий

Репозиторий полностью пуст (без сегментов), отсюда и сбой "проверки борга". Другие команды выдают эту ошибку:

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')

Верно.
Я полагаю, что это довольно хорошо известное состояние для полностью пустого состояния, и, возможно, такое утверждение - не самый лучший способ справиться с ним?

Да, следует добавить проверку, которая прерывается раньше и с более четким сообщением об ошибке при открытии репозитория без фиксации.

Я исправил это как можно лучше:

  • Список borg: очистить сообщение об ошибке, если нет манифеста, нет трассировки.
  • проверка borg: теперь работает для пустого репо
  • borg delete repo: теперь работает для пустого репо (без манифеста)
  • но: borg check --repair не может восстановить такие репо. он не имеет кусков, поэтому не может определить ключ и, следовательно, не может написать новый манифест. но поскольку теперь работает удаление репо, это можно решить с помощью удаления и свежего init.

https://github.com/borgbackup/borg/pull/1137/commit

Была ли эта страница полезной?
0 / 5 - 0 рейтинги