使用 Zpaq 的存档目录

使用 Zpaq 的存档目录

我正在尝试为服务器设置备份系统,以便改进旧系统。我选择赞巴克因为它在旧系统中提供了良好的压缩lrzip -z,并且链接页面声称提供增量压缩,其中在每个新的备份实例中只备份更改的数据。

我目前正在使用以下脚本进行备份(所有数据都存储在server目录中):

cd server
zpaq pa ../backup.zpaq *

此脚本会生成一个存档,其中包含服务器目录下的所有文件,但不会递归扫描整个目录系统。我怎样才能让它扫描整个目录系统?当我删除该a选项或server从其父级备份目录时,问题仍然存在。

手册页该工具的作者似乎写道:

如果名称是目录,那么它会递归地包含其中的所有文件和子目录。

Ubuntu 的手册页没有提到递归。我已经使用 从 Ubuntu 的存储库安装了该工具apt-get install zpaq。如果 Ubuntu 的 zpaq 与我在此问题开头链接的 zpaq 有所不同,请解释在哪里可以找到链接的 zpaq 的 Ubuntu 软件包。

答案1

看起来您想要一个能够zpaq按预期工作的解决方案。但是,如果您使用bash,此解决方法应该会让您获得想要的结果。输入shopt -s globstar。然后,执行您一直使用的命令,但有一小点变化:

zpaq pa ../backup.zpaq **

globstar模式生效的情况下, **扩展为当前目录中的条目列表;即当前目录及以下。类似地*,它将忽略.(隐藏)文件。如果您想要包含它们,shopt -s dotglob也请这样做。(您可以将它们组合成一个命令:shopt -s globstar dotglob。)

在脚本中执行此操作最为方便。但是,如果您在主(交互式)shell 中执行此操作,则可能需要撤消设置shopt。您可以使用 执行此操作shopt -u globstar dotglob

注意:如果文件太多,这可能会失败,因为命令行的长度有限制 - 但它相当大。

答案2

我在 Ubuntu 14.04.3 上遇到了同样的问题。解决方案是不使用存储库中的软件包,而是安装最新的源代码http://mattmahoney.net/dc/zpaq.html

下载包后,它是 .zip 格式,需要使用 unzip 解压。然后执行以下操作:

make
sudo make install

现在做

zpaq a *archive* */dir*

将包括该目录及其所有子目录和文件。

相关内容