我有一个基本脚本,我想要执行以下操作:
现在 - 如果2台服务器在同一时间运行同一个脚本(可以访问相同的NFS文件共享):
从我在网上找到的内容来看,服务器2似乎只会抛出错误 - 但是没有文件损坏或任何应该关注的事情: http://nfs.sourceforge.net/
文件句柄指的是已删除的文件。删除文件后 服务器,客户端在尝试访问文件之前不会发现 他们从之前的LOOKUP中缓存了一个文件句柄。使用rsync 或 mv在另一个客户端上使用时替换文件是一个 导致ESTALE错误的常见情况。
我已经尝试过模拟这个以确认但是还没有成功地做到这一点 - 所以我想在实施这个策略之前检查一下:
问题: 我的理解是否准确 - 或者我是否需要使用其他策略来确保file.txt不会被破坏?
其他细节: 亚马逊Linux OS。安装的驱动器为 nsf4 。该文件可能大到100MB
答案 0 :(得分:2)
check-if-file-exists是一个典型的TOCTTOU问题。
最简单的解决方法是不检查,尝试到mv
。
如果没有要移动的文件,mv
将失败(并且不执行任何操作)。