我正在尝试为服务器设置备份系统,以便改进旧系统。我选择赞巴克因为它在旧系统中提供了良好的压缩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*
将包括该目录及其所有子目录和文件。