![当 deja-dup 恢复失败时该怎么办?](https://linux22.com/image/910900/%E5%BD%93%20deja-dup%20%E6%81%A2%E5%A4%8D%E5%A4%B1%E8%B4%A5%E6%97%B6%E8%AF%A5%E6%80%8E%E4%B9%88%E5%8A%9E%EF%BC%9F.png)
我使用 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 忽略的问题而失败,否则不建议使用此选项。即使这样,根据问题的不同,此选项也可能不起作用。
请注意,虽然忽略的错误会被记录下来,但操作结束时不会有摘要告诉您忽略了什么(如果有的话)。如果将其用于紧急恢复数据,建议您以可以重新访问备份日志的方式运行备份(查找包含字符串 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 来完成它的工作。
然后我能够恢复我需要的所有文件,而不会在结束前崩溃:)