我正在尝试从旧的重复备份中提取备份(由 ubuntu gui 完成,我相信它是 deja-dup)。
我从一个垂死的硬盘上复制了所有我能做的东西。我有
- 很多
difftar.gz
文件——一些 2014 年和一些 2016 年。 - 2014 年的一个
.manifest
文件。 - 没有
sigtar.gz
文件
备份未加密 - 我解压缩了一个difftar.gz
文件并在十六进制编辑器中检查它,我可以看到很多纯文本。
运行一些命令:
% duplicity --no-encryption --ignore-errors collection-status file:///home/hamish/poonbackup2014
Running in 'ignore errors' mode due to --ignore-errors; please re-consider if this was not intended
Last full backup date: Mon Sep 15 19:37:44 2014
Collection Status
-----------------
Connecting with backend: BackendWrapper
Archive directory: /home/hamish/.cache/duplicity/c34b5c3ae7d763a715fd062ec5f49baa
Found 1 secondary backup chain.
Secondary chain 1 of 1:
-------------------------
Chain start time: Mon Sep 15 19:37:44 2014
Chain end time: Mon Sep 15 19:37:44 2014
Number of contained backup sets: 1
Total number of contained volumes: 2063
Type of backup set: Time: Number of volumes:
Full Mon Sep 15 19:37:44 2014 2063
-------------------------
No backup chains with active signatures found
No orphaned or incomplete backup sets found.
% duplicity --no-encryption --ignore-errors collection-status file:///home/hamish/poonbackup2016
Running in 'ignore errors' mode due to --ignore-errors; please re-consider if this was not intended
Warning, found incomplete backup sets, probably left from aborted session
Last full backup date: none
Collection Status
-----------------
Connecting with backend: BackendWrapper
Archive directory: /home/hamish/.cache/duplicity/37e66337a462669832db8b2b852f9c6f
Found 0 secondary backup chains.
No backup chains with active signatures found
Also found 0 backup sets not part of any chain,
and 2 incomplete backup sets.
These may be deleted by running duplicity with the "cleanup" command.
% duplicity --no-encryption --ignore-errors list-current-files file:///home/hamish/poonbackup2014
Running in 'ignore errors' mode due to --ignore-errors; please re-consider if this was not intended
Synchronising remote metadata to local cache...
Deleting local /home/hamish/.cache/duplicity/f152114ed2326b0ba48e42e6ec0a23d6/duplicity-full.20140915T183744Z.manifest (not authoritative at backend).
Last full backup date: none
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 1476, in do_backup
list_current(col_stats)
File "/usr/bin/duplicity", line 702, in list_current
sig_chain = col_stats.get_signature_chain_at_time(time)
File "/usr/lib/python2.7/dist-packages/duplicity/collections.py", line 998, in get_signature_chain_at_time
raise CollectionsError("No signature chains found")
CollectionsError: No signature chains found
假设我无法从原始硬盘驱动器中提取更多文件,我是否可以选择提取文件?
我对提取照片最感兴趣——如果我可以提取一个没有名称或文件元数据的照片文件,那么这将是一个胜利。
收集状态在 file:///home/hamish/poonbackup2014 中找到一个链。所以理论上你应该能够恢复整个备份。仅需要签名来恢复单个文件/文件夹或列出内容。
..ede/duply.net
我总体上遵循了此答案中的指南,但我想扩展一些要点:
全面的
这些
difftar.gz
文件都是普通tar.gz
文件,没有加密。如果您将它们全部解压缩,它们会将其内容放入文件结构中。顶层有两个目录:snapshot/
- 这包含普通文件,但在我的情况下,它有一个(非常)我关心的文件的一小部分 - 我想要恢复的 100 GB 中的大约 100 MB。multivol_snapshot/
- 这包含每个普通文件的目录。在每个目录中都有一组文件,文件名只有一个数字 -1
,2
, ... 文件大小似乎总是 64 kB(当然最后一个除外)。您可以手动将文件集中在一起,这对于少量文件来说是合理的。不过我有很多。打开包装
首先,我需要解压缩所有 tar gz 文件:
重建
上面喜欢的答案有一个shell one liner,但这会创建许多
content
与原始内容混合命名的文件。我想重新创建文件系统。所以我写了下面的python脚本,它有2个参数:multivol_snapshot/
包含要恢复的位的目录它将递归地遍历所有内容并重新创建文件。只要您拥有所需的所有块,它就可以正常工作...