【发布时间】:2018-07-23 19:27:05
【问题描述】:
我试图使用 lftp 镜像 配置使本地文件夹 [lftp_source_folder] 和远程文件夹 [lftp_server_path] 保持同步。
下面给出了连续运行的脚本。
while true
do
lftp -f $BATCHFILE
sleep 20
done
$BATCHFILE 主要包括以下内容:
# sftp config +
echo "mirror --Remove-source-files -R /lftp_source_folder /lftp_server_path/" >> $BATCHFILE
但问题是,我有一个脚本会继续将文件移动到 /lftp_source_folder。
现在我很困惑,由于这个实现,是否有可能出现竞态条件。
例如
- 我的脚本正在将文件移动到 /lftp_source_folder
说 50% 的文件已移动到 /lftp_source_folder 并且 mv 命令被操作系统中断。
/lftp_source_folder/new_file.txt[new_file.txt只是大小的 50%] - lftp 已被 while 循环调用。
- mv 命令再次继续
在第2步中,lftp会将完成50%的文件上传到lftp服务器并删除该文件吗?在这种情况下,数据将丢失。
如果是竞态条件,解决办法是什么?
【问题讨论】: