在执行命令之前如何确认文件同步已完成?

在执行命令之前如何确认文件同步已完成?

我有一台计算机使用 Resilio Sync 定期与另一台计算机同步内容文件夹。接收计算机在每小时的 cron 上有一个排序过程,该过程在将文件夹及其内容移动和编目到单独的文件系统中之前对其进行分析。

我的问题是,如果同步不完整,每小时 cron 将运行并处理没有完整内容的文件夹。每小时 cron 进程需要该文件夹的全部内容才能正确处理内容。

有没有一种简单的方法来检查接收同步文件夹的内容是否未打开,我已经研究过 lsof,但是也许有更简单的方法?

如果有帮助的话,我可以从 Resilio 同步过程切换到 rsync。

答案1

我怀疑有很多方法可以做到这一点。第一个来找我要包含校验和。在发送服务器上您可以运行:

tar -cf - FILES | md5sum > my_sum.md5

我们使用tar( ) 创建c一个文件 ( f) 到stdin( -)上,FILES该文件可以是一个glob、目录或空间界定的文件列表,然后通过管道传输到该列表,md5sum并将哈希值保存在 my_sum.md5 中。

在接收端,您可以在cron工作中添加一个检查,首先尝试查找 my_sum.md5 (如果它不存在,那么显然我们还没有复制所有内容),如果它存在,请检查是否有类似的校验和生成接收端有一个匹配的校验和。

相关内容