cron 脚本中的 Rsync 行为

cron 脚本中的 Rsync 行为

我有一个 nfs 设备,它每天都会创建检查点(备份)。我想使用 Rsync 将这些检查点复制到另一台设备(通过 iSCSI 连接的 Drobo)。因此,我在单个 nfs 共享上运行了该脚本,它运行良好。以下是我担心的几个问题,如果多次尝试,将花费太长时间。

  1. 有多个共享需要备份,我想循环遍历它们并在每个共享上运行脚本。这将如何与 Rsync 配合使用?Rsync 作业是否会启动然后再次循环并同时运行第二个、第三个和第四个 Rsync 作业,或者 Rsync 是否会等待作业完成后再结束并重新启动循环?也许我只需要在循环中进行一些检查,以便在 Rsync 完成之前不重新启动。

  2. 参考最后一句话;Rsync 返回什么,我可以使用它来报告是否出现错误,或者如果一切顺利,是否继续循环?

  3. NFS 设备创建的检查点以日期命名。Rsync 将 .ckpt* 文件解压到静态命名的目录中。由于源是不同的目录,但里面的文件相同,并且目标名称相同,Rsync 是否仍会仅复制差异?

这是 rsync 作业: rsync -az $NEWCHKPT/* /drobo/bak.${share}/${share}_daily

我知道这篇文章问的太多了。任何建议都非常感谢。

答案1

  1. 取决于您如何编写循环;除非您使用符号在后台运行 rsync 命令&,否则 rsync 命令将按顺序运行。

  2. rsync 将返回一个有用的退出状态。这些状态列在 rsync 的手册页中。man rsync | less '+/^EXIT VALUE'您必须决定是否要在一个脚本失败时中止整个脚本,或者尝试运行其他脚本,然后在最后为失败的脚本提供错误摘要。

  3. rsync 有多种方法来决定是否复制文件。默认是检查源文件和目标文件的大小和最后修改时间。如果两者匹配,则跳过复制该文件。这通常就足够了。

相关内容