手动提取duplicity文件

我丢失了驱动器,并在其中安装了Ubuntu操作系统,我使用Duplicity创建了备份,我不知道如何恢复我仍保留在另一个驱动器中的存档文件。 他们都遵循这4个符号

duplicity-full.20140106T111233Z.manifest duplicity-full-signatures.20140106T111233Z.sigtar.gz duplicity-full.20140106T111233Z.volxxx.difftar.gz (multiple volumes) duplicity-full.20140106T111233Z.volxxx.difftar (multiple volumes) 

我需要恢复的重要数据。 有什么我可以做的吗? 使用gzip会不够? 如果是这样,我怎么能轻易地提取它们?

编辑1尝试你的建议,恢复和–gio选项,我得到这个文本:

 duplicity restore file://media/ubuntu/Toshiba\ HDD/BACKUPS/Documents/ /media/ubuntu/9fb63c8e-ecb5-4c55-b4e0-282e7b4a82ff/tmp/docs/ Local and Remote metadata are synchronized, no sync needed. Last full backup date: none GnuPG passphrase: Traceback (most recent call last): File "/usr/bin/duplicity", line 1494, in  with_tempdir(main) File "/usr/bin/duplicity", line 1488, in with_tempdir fn() File "/usr/bin/duplicity", line 1337, in main do_backup(action) File "/usr/bin/duplicity", line 1422, in do_backup restore(col_stats) File "/usr/bin/duplicity", line 697, in restore restore_get_patched_rop_iter(col_stats)): File "/usr/bin/duplicity", line 719, in restore_get_patched_rop_iter backup_chain = col_stats.get_backup_chain_at_time(time) File "/usr/lib/python2.7/dist-packages/duplicity/collections.py", line 952, in get_backup_chain_at_time raise CollectionsError("No backup chains found") CollectionsError: No backup chains found 

/ media / ubuntu / Toshiba \ HDD / BACKUPS / Documents /是所有duplicity文件所在的位置, / media / ubuntu / 9fb63c8e-ecb5-4c55-b4e0-282e7b4a82ff / tmp / docs /我要恢复的临时目标文件夹文件到。

编辑2纠正了file:// media中丢失的斜杠….现在我得到了恢复的文件,但不完全符合我的预期。 丢失了很多文件(最多24 GB!)

 root@ubuntu:/media/ubuntu/Toshiba HDD/BACKUPS/Documents# ls -la /tmp/docs/home/luis/ total 4176 drwx------ 16 root root 1000 Jun 30 19:13 . drwx------ 3 root root 60 Jun 30 19:13 .. drwx------ 3 1000 1000 60 Oct 23 2013 .activestate drwxr-xr-x 2 1000 1000 60 Oct 23 2013 .ActiveState drwx------ 3 1000 1000 60 Dec 28 2012 .adobe -rw------- 1 1000 1000 32120 Jan 4 12:56 .bash_history -rw-r--r-- 1 1000 1000 220 Dec 28 2012 .bash_logout -rw-r--r-- 1 1000 1000 3637 Dec 28 2012 .bashrc drwx------ 3 1000 1000 60 Jan 3 14:01 .cache drwxr-xr-x 3 1000 1000 60 Nov 16 2013 .cddb -rw-rw-r-- 1 1000 1000 740 Jan 10 2013 .cola drwx------ 3 1000 1000 60 Dec 29 2012 .compiz drwxrwxr-x 3 1000 1000 80 Oct 1 2013 .composer drwx------ 46 1000 1000 1020 Dec 8 2013 .config drwx------ 3 1000 1000 60 Dec 28 2012 .dbus -rw-r--r-- 1 1000 1000 25 Jul 13 2013 .dmrc drwx------ 3 1000 1000 380 Jan 6 10:31 .dropbox drwxr-xr-x 6 1000 1000 1660 Dec 17 2013 .dropbox-dist drwx------ 3 root root 60 Jun 30 19:13 .eclipse -rw------- 1 1000 1000 50282 Jan 6 10:29 .ICEauthority drwxrwxr-x 14 1000 1000 340 Dec 7 2013 .PlayOnLinux -rw-r--r-- 1 root root 2077491 Nov 23 2013 .Soulseek.1385165090491 -rw-r--r-- 1 root root 2076644 Nov 23 2013 .Soulseek.1385166430938 -rw-r--r-- 1 1000 1000 9986 Dec 30 20:02 .Soulseek.1388433748295 drwxrwxr-x 2 1000 1000 60 Oct 13 2013 .SyncWall -rw------- 1 1000 1000 109 Jan 6 10:29 .Xauthority -rw-rw-r-- 1 1000 1000 0 Jul 29 2013 .Xauthority.25Y20W -rw-rw-r-- 1 1000 1000 0 Jul 13 2013 .Xauthority.7K14ZW -rw-rw-r-- 1 1000 1000 0 Jul 7 2013 .Xauthority.7K7SZW -rw-rw-r-- 1 1000 1000 0 Jul 13 2013 .Xauthority.9X1E0W -rw-rw-r-- 1 1000 1000 0 Sep 1 2013 .Xauthority.A3D52W -rw-rw-r-- 1 1000 1000 0 Sep 1 2013 .Xauthority.CEUV2W -rw-rw-r-- 1 1000 1000 0 Jul 27 2013 .Xauthority.CP7Q0W -rw-rw-r-- 1 1000 1000 0 Sep 8 2013 .Xauthority.E1ET2W -rw-rw-r-- 1 1000 1000 0 Aug 26 2013 .Xauthority.E32K2W -rw-rw-r-- 1 1000 1000 0 Sep 14 2013 .Xauthority.EKK92W -rw-rw-r-- 1 1000 1000 0 Jul 12 2013 .Xauthority.F4QRZW -rw-rw-r-- 1 1000 1000 0 Jul 25 2013 .Xauthority.ISVZ0W -rw-rw-r-- 1 1000 1000 0 Jul 11 2013 .Xauthority.JU3UZW -rw-rw-r-- 1 1000 1000 0 Aug 31 2013 .Xauthority.M30S2W -rw-rw-r-- 1 1000 1000 0 Aug 1 2013 .Xauthority.M3H20W -rw-rw-r-- 1 1000 1000 0 Sep 9 2013 .Xauthority.MKIN2W -rw-rw-r-- 1 1000 1000 0 Aug 28 2013 .Xauthority.RWHB2W -rw-rw-r-- 1 1000 1000 0 Jul 15 2013 .Xauthority.SN85ZW -rw-rw-r-- 1 1000 1000 0 Sep 15 2013 .Xauthority.T22C3W -rw-rw-r-- 1 1000 1000 0 Jul 14 2013 .Xauthority.T6CB0W -rw-rw-r-- 1 1000 1000 0 Jul 31 2013 .Xauthority.VF7Q0W -rw-rw-r-- 1 1000 1000 0 Sep 9 2013 .Xauthority.WGEX2W -rw-rw-r-- 1 1000 1000 0 Aug 31 2013 .Xauthority.WZR52W -rw-rw-r-- 1 1000 1000 0 Jul 25 2013 .Xauthority.YQIR0W 

最奇怪的是,除了以点开头的所有文件之外,我无法使用Nautilus浏览home / luis目录,这实际上是我所有备份数据的所在。

  1. 使用duplicity来提取它:

     duplicity restore file:///path_to_folder_contains_backups/ path_where_to_extract_it/ 
  2. 输入GnuPG密码,按Enter键

默认情况下,Duplicity会恢复源文件夹中的上次备份(比较时间),即使它不是同一文件夹的备份。 如果您有不同文件夹的多个备份,或者您想要同一文件夹的特定时间,请使用--time选项示例:

 duplicity restore --time 20140106T111233Z file:///path_to_folder_contains_backups/ path_where_to_extract_it/ 

无法查看您要查找的文件,请尝试:

  1. 创建function,列出源文件夹中可用的所有full / inc备份中包含的所有文件:

     ldup () { for f in $(ls $1/duplicity-*.manifest.gpg); do echo "========================================================================"; echo $f; n=$(basename $f .manifest.gpg); prefix=$(echo $n | awk 'BEGIN { FS = "." } ;{ print $1 }'); if [[ "$prefix" == "duplicity-full" ]]; then t=$(echo $n | awk 'BEGIN { FS = "." } ;{ print $2 }'); else t=$(echo $n | awk 'BEGIN { FS = "." } ;{ print $4 }'); fi; echo -e "Creation time:\t" $t; echo "------------------------------------------------------------------------"; duplicity list-current-files --time $t file://$1/ | grep "$2"; done; } 
  2. 列出所有文件(注意没有尾部/ ):

     ldup /path_to_folder_contains_backups 
  3. 在文件名中搜索模式:

     ldup /path_to_folder_contains_backups pattern 

参考: man duplicity

首先尝试用双重性进行恢复。
duplicity --gio file:///media/backup /tmp/restore

这里有一些相当详细(并且大多数是正确的)步骤。

关键细节

关键是在同一个地方解压缩所有duplicity-full.*.difftar.gz文件,这样你只剩下两个snapshot/multivol_snapshot/目录。

如果你的文件是snapshot/那么你就完成了。 否则,在multivol_snapshot/中找到您的文件所在路径的目录:您需要将此目录中的所有文件连接在一起以重新创建原始文件。 文件已编号,可以使用cat命令连接在一起。 根据原件的大小,可能有很多部件。

原始说明有问题

上面链接的指示建议使用cat * > rescued-file 。 不幸的是,如果你有超过9个部分,这个简单的方法会失败 由于*以字典顺序扩展,而不是数字顺序,因此将在2之前列出10 ,并且文件将以错误的顺序重建。

解决方法

一个简单的方法是记住,当数字长度相同时,字典顺序是否有效,那么? 匹配单个字符。 因此,如果您的最大文件有三位数,您可以手动输入:

 cat ? ?? ??? > rescued-file 

添加还是删除? 必要时的模式,具体取决于最大的文件编号。

脚本

如果你有很多要恢复的文件,并且不想为所有文件打字,你可能更喜欢使用这样的脚本。 它列出了每个文件的包含目录,从列表中删除了重复项,然后转到每个目录并从那里的片段创建content文件。 ( spacer只需$1就可以$1 。)

 find multivol_snapshot/ -type f -printf '%h\0' | \ sort -uz | \ xargs -0 -n 1 sh -c 'cd "$1" ; cat $(ls | sort -n) > content' spacer 

现在你只需要添加/content到你正在寻找的任何文件名的末尾,你应该找到它。

限制

这不会还原任何原始文件权限或所有权。 它也没有处理增量备份,但是在这一点上链接的指令也达到了一个死胡同 – 他们只是建议使用rdiff ‘将文件拼接在一起’并将读者引用到man rdiff

来源: SF SE
在这里你可以找到一个java程序,以便轻松恢复复杂的备份。

DéjàDup为存储在备份位置的文件使用不透明格式。 您必须使用DéjàDup或其他基于背道的工具来恢复您的文件(请参阅此恢复指南 )。

Interesting Posts