如何在macOS下检查文件是否正在被复制

5
我们网络上的用户使用AFP连接在服务器上的名为"DropBox"的目录中通过Finder简单拖放来复制文件。
运行在服务器上的脚本会定期检查"DropBox"内是否有新文件,并使用mv将它们移动到其他目录中。
脚本如何检查文件是否正在被复制(并等待该过程完成后再将其移开)?
我尝试使用fuser filename,但并没有成功。如果文件复制是由远程机器发出的,则fuser报告未使用该文件的进程。
1个回答

2
有两种方法可以解决这个问题:

1. 标记文件名以告知文件是部分文件:

当一个文件被写入(移动/复制)到DropBox中时,.part扩展名会添加到文件名中。当写入结束后,.part扩展名将被删除。 只有当没有.part扩展名时,其他进程才能操作文件。

2. 检查文件大小;如果大小保持不变,则写操作已结束(也许)

这种方法比(1)更不准确、更复杂,但如果由于某种原因选项1不可行,则提供一个很好的猜测。 对于Dropbox中的每个文件,记录大小不改变的时间。 当文件增大时,时间值将重置为零。 当一个文件没有被写入时,时间值保持不变。 如果一个文件在至少(30秒、1分钟,你能承受的时间越长越好)内没有增长,则写操作结束,文件可以被管理。 当传输中断时,此方法会失败。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接