我们网络上的用户通过 AFP 连接将文件复制到服务器上名为“DropBox”的目录中,只需使用 Finder 拖动它们即可。
服务器上运行的脚本定期检查“DropBox”中是否存在新文件,然后使用mv将它们移动到其他目录中。
脚本如何检查文件是否正在被复制(并等待该过程完成后再将其移走)?
我尝试使用定影器文件名但没有成功。如果文件副本是由远程计算机发出的,fuser会报告没有进程正在使用该文件。
解决这个问题有两种方法:
当文件写入(移动/复制)到 DropBox 时,.part名称中会添加扩展名。当书写结束时,.part扩展被移除。.part仅当扩展名不存在时,其他进程才对文件进行操作。
这比 (1) 不太准确且更复杂,但如果选项 1 由于某种原因不可行,则可以提供一个很好的猜测。对于保管箱中的每个文件,都会记录大小未更改的时间。当文件大小增加时,时间值将重置为零。当未写入文件时,时间值保持不变。如果文件至少在(30秒,1分钟,当然你能承受的时间越长越好)没有增长,那么写操作就结束了,文件可以被管理了。当传输中断时,此方法会失败。