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