我们有一组使用 Duplicity 备份的服务器。我们正在尝试为员工构建一些功能,以便他们可以选择文件并查看可供恢复的版本。Duplicity 将其元数据存储在 tar 文件中,如下所示:
16M Mar 6 07:20 duplicity-new-signatures.20140305T070733Z.to.20140306T070755Z.sigtar.gz
17M Mar 5 07:17 duplicity-new-signatures.20140304T070728Z.to.20140305T070733Z.sigtar.gz
74M Mar 4 08:02 duplicity-full-signatures.20140304T070728Z.sigtar.gz
13M Mar 3 09:11 duplicity-new-signatures.20140302T070743Z.to.20140303T070723Z.sigtar.gz
14M Mar 2 07:18 duplicity-new-signatures.20140301T070921Z.to.20140302T070743Z.sigtar.gz
18M Mar 1 07:22 duplicity-new-signatures.20140228T071001Z.to.20140301T070921Z.sigtar.gz
16M Feb 28 07:23 duplicity-new-signatures.20140227T071151Z.to.20140228T071001Z.sigtar.gz
15M Feb 27 07:27 duplicity-new-signatures.20140226T070820Z.to.20140227T071151Z.sigtar.gz
13M Feb 26 07:20 duplicity-new-signatures.20140225T071049Z.to.20140226T070820Z.sigtar.gz
14M Feb 25 07:28 duplicity-new-signatures.20140224T070941Z.to.20140225T071049Z.sigtar.gz
92M Feb 24 08:14 duplicity-full-signatures.20140224T070941Z.sigtar.gz
- 每个
.sigtar.gz
文件都是一个 tar 存档,其中包含所有已更改文件的签名。签名存储为与其引用的文件同名的文件。 duplicity-full
文件包含集合中每个文件的签名duplicity-new
文件仅包含自上次完整或增量备份以来发生变化的文件的签名。
本质上我需要做的是:
for file in `ls /root/.cache/duplicity/hashid/*.sigtar.gz`; do
tar -tzvf $file signature/path/to/specified/file.name
done
问题是,即使服务器的数据量仅为我们预期的“满载”服务器的 1/20,列出“满载”也可能需要超过 10 秒的时间。我不敢想象一旦这些机器装满,这个过程可能需要多长时间。
有没有什么方法可以加快通过 tar 检索的速度?
或者如果有人碰巧知道解析 Duplicity 元数据的更好方法,我肯定想知道。
答案1
可以使用以下--seek
选项来加速通过 tar 进行的检索:
-n, --seek
archive is seekable
然而,由于 tarball 是压缩的,因此无法进行查找。http://duplicity.nongnu.org/new_format.html承认这一限制。