我有一个 nfs 设备,它每天都会创建检查点(备份)。我想使用 Rsync 将这些检查点复制到另一台设备(通过 iSCSI 连接的 Drobo)。因此,我在单个 nfs 共享上运行了该脚本,它运行良好。以下是我担心的几个问题,如果多次尝试,将花费太长时间。
有多个共享需要备份,我想循环遍历它们并在每个共享上运行脚本。这将如何与 Rsync 配合使用?Rsync 作业是否会启动然后再次循环并同时运行第二个、第三个和第四个 Rsync 作业,或者 Rsync 是否会等待作业完成后再结束并重新启动循环?也许我只需要在循环中进行一些检查,以便在 Rsync 完成之前不重新启动。
参考最后一句话;Rsync 返回什么,我可以使用它来报告是否出现错误,或者如果一切顺利,是否继续循环?
NFS 设备创建的检查点以日期命名。Rsync 将 .ckpt* 文件解压到静态命名的目录中。由于源是不同的目录,但里面的文件相同,并且目标名称相同,Rsync 是否仍会仅复制差异?
这是 rsync 作业:
rsync -az $NEWCHKPT/* /drobo/bak.${share}/${share}_daily
我知道这篇文章问的太多了。任何建议都非常感谢。
答案1
取决于您如何编写循环;除非您使用符号在后台运行 rsync 命令
&
,否则 rsync 命令将按顺序运行。rsync 将返回一个有用的退出状态。这些状态列在 rsync 的手册页中。
man rsync | less '+/^EXIT VALUE'
您必须决定是否要在一个脚本失败时中止整个脚本,或者尝试运行其他脚本,然后在最后为失败的脚本提供错误摘要。rsync 有多种方法来决定是否复制文件。默认是检查源文件和目标文件的大小和最后修改时间。如果两者匹配,则跳过复制该文件。这通常就足够了。