题 如何手动提取duplicity所做的备份集?


我在我的网络服务器上有一组由duplicity软件生成的文件:

  • 口是心非,full.20110315T085334Z.vol1.difftar.gz
  • 口是心非,full.20110315T085334Z.vol2.difftar.gz
  • 口是心非,full.20110315T085334Z.vol3.difftar.gz
  • 等...(50个文件,总大小约1 Gb)

备份已经完成,没有加密。

我当前的主机在他的服务器上没有两面性并且不想安装它。如何使用远程SSH访问解压缩这些文件?也许有一些bash脚本可以做到这一点?


5
2018-03-21 07:39






答案:


如何下载所需的存档,然后像这样: duplicity scp://uid@other.host//usr/backup restored_dir(来自官方网站的示例)


2
2018-03-21 12:09



它可能但很慢:下载1 GB,然后上传4-5 GB。当然,如果没有其他方法可以直接在服务器上执行此操作,我将使用此方法。 :( - Andrew
好。似乎除此之外别无他法 - Andrew


万一其他人遇到这个(就像我刚才那样)有一些相当详细(和 大多 正确的)步骤 在这里

关键细节

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

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

原始说明有问题

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

解决方法

一种简单的方法是记住字典顺序  当数字长度相同时工作 ? 匹配单个字符。所以如果你的最大文件有  数字,你可以手动输入:

cat ? ?? ??? > rescued-file

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

脚本

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


6
2017-08-13 18:56



这个 links有一个用于恢复的java程序。 - totti


您可以尝试解压缩这些存档,并复制所需的文件。我不知道它如何备份文件,但我认为它将文件复制到dir并gzip它(或tar.gz)


0
2018-03-21 10:48



每个.difftar.gz卷都有2个子文件夹:“snapshot”和“multivol_snashot”。 “multivol_snapshot”文件夹中的每个文件都表示为包含该文件部分的文件夹(1,2,3等)。我不知道如何正确打开它们 - Andrew


在您的情况下,我认为,最好使用可以简单提取的备份软件(或脚本)。你可以看到backuppc,flaxbackup(我不知道它是否适用于你的主机,如果它是vps(或vds)它会,但如果它只是共享主机它不会)。


0
2018-03-21 12:31



它是一个虚拟主机,既没有backuppc也没有flexbackup可用。 - Andrew