我的网络服务器上有一组由 duplicity 软件生成的文件:
- duplicity-full.20110315T085334Z.vol1.difftar.gz
- duplicity-full.20110315T085334Z.vol2.difftar.gz
- duplicity-full.20110315T085334Z.vol3.difftar.gz
- 等等...(50 个文件,总大小约 1 Gb)
备份已完成且未加密。
我当前的托管商的服务器上没有 duplicity,也不想安装它。如何使用远程 SSH 访问解压这些文件?也许有一些 bash 脚本可以做到这一点?
答案1
如何下载所需的档案,然后这样做:duplicity scp://[电子邮件保护]//usr/backup restored_dir (来自官方网站的示例)
答案2
万一其他人遇到这种情况(就像我刚刚遇到的一样),这里有一些相当详细的(和大多正确的)步骤在这里。
关键细节
关键点是将所有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
。
答案3
您可以尝试解压这些档案,并复制所需的文件。我不知道它如何备份文件,但我认为它将文件复制到目录并对其进行 gzip 压缩(或 tar.gz)
答案4
就你的情况而言,我认为最好使用可以简单提取的备份软件(或脚本)。你可以看看 backuppc、flaxbackup(我不知道它是否在你的主机上工作,如果是 vps(或 vds)它可以,但如果只是共享主机则不行)。