当 deja-dup 恢复失败时该怎么办?

当 deja-dup 恢复失败时该怎么办?

我使用 deja-dup 在约 300Gb 的外部硬盘中完成了完整备份。

我正在尝试将其恢复到另一个 1TB 外部硬盘中,但是当提取 58GB 时出现错误 :(

Traceback (innermost last):
  File "/usr/bin/duplicity", line 1555, in <module>
    with_tempdir(main)
  File "/usr/bin/duplicity", line 1541, in with_tempdir
    fn()
  File "/usr/bin/duplicity", line 1393, in main
    do_backup(action)
  File "/usr/bin/duplicity", line 1472, in do_backup
    restore(col_stats)
  File "/usr/bin/duplicity", line 728, in restore
    restore_get_patched_rop_iter(col_stats)):
  File "/usr/lib/python2.7/dist-packages/duplicity/patchdir.py", line 560, in Write_ROPaths
    ITR(ropath.index, ropath)
  File "/usr/lib/python2.7/dist-packages/duplicity/lazy.py", line 344, in __call__
    last_branch.fast_process, args)
  File "/usr/lib/python2.7/dist-packages/duplicity/robust.py", line 38, in check_common_error
    return function(*args)
  File "/usr/lib/python2.7/dist-packages/duplicity/patchdir.py", line 614, in fast_process
    ropath.copy(self.base_path.new_index(index))
  File "/usr/lib/python2.7/dist-packages/duplicity/path.py", line 445, in copy
    other.writefileobj(self.open("rb"))
  File "/usr/lib/python2.7/dist-packages/duplicity/path.py", line 627, in writefileobj
    buf = fin.read(_copy_blocksize)
  File "/usr/lib/python2.7/dist-packages/duplicity/patchdir.py", line 212, in read
    if not self.addtobuffer():
  File "/usr/lib/python2.7/dist-packages/duplicity/patchdir.py", line 237, in addtobuffer
    self.tarinfo_list[0] = self.tar_iter.next()
  File "/usr/lib/python2.7/dist-packages/duplicity/patchdir.py", line 344, in next
    self.set_tarfile()
  File "/usr/lib/python2.7/dist-packages/duplicity/patchdir.py", line 333, in set_tarfile
    self.current_fp = self.fileobj_iter.next()
  File "/usr/bin/duplicity", line 764, in get_fileobj_iter
    backup_set.volume_name_dict[vol_num],
 KeyError: 391

有人知道这种错误吗?

是否可以重试恢复但从之前停止的地方开始?

答案1

看起来你缺少了一卷。

尝试在 duplicity 调用中添加参数“--ignore-errors”,并监视无法恢复的文件的输出。..ede/duply.net

来自duplicity 手册页

--忽略错误

如果发生某些错误,请尝试忽略它们。此选项仅用于在出现某些问题时恢复备份,否则这些问题会导致备份失败。除非您尝试从备份中恢复,并且由于您希望 duplicity 忽略的问题而失败,否则不建议使用此选项。即使这样,根据问题的不同,此选项也可能不起作用。

请注意,虽然忽略的错误会被记录下来,但操作结束时不会有摘要告诉您忽略了什么(如果有的话)。如果将其用于紧急恢复数据,建议您以可以重新访问备份日志的方式运行备份(查找包含字符串 IGNORED_ERROR 的行)。

如果您因为无法理解或理解但不属于您自身责任的原因而不得不使用此选项,请联系 duplicity 维护人员。在生产环境下需要使用此选项通常会被视为错误。

答案2

经过许多天的痛苦折磨以及对 duplicity + deja-dup 无数的恶名之后,我终于恢复了我的重要数据。

为了做到这一点我必须:

  • 向每一位现存的圣人祈祷:D
  • 使用创建了一个包含外部磁盘中所有备份文件的文本文件duplicity list-current-files file:///media/user/sdb > files.txt
  • 使用 nautilus 从上面的列表逐一手动提取所有最重要的目录;
  • 然后在 nautilus 中逐个选择每个目录并调用Revert to Previous Version;这调用 deja-dup 来完成它的工作。

然后我能够恢复我需要的所有文件,而不会在结束前崩溃:)

相关内容