正在复制文件

我有一个Node.js程序周期性地通过目录中的video文件循环。 如果添加或删除文件,程序将更新数据库以反映此更改。 添加文件时,使用FFmpeg生成缩略图。

当我尝试在当前正在复制到目录的文件上运行FFmpeg时遇到问题。 由于文件不完整,FFmpeg无法生成缩略图。 如果我知道一个文件被复制的时候,我可以忽略它,下一次扫描该目录的时候就会被拾取。

如何确定当前是否正在复制文件,或者如何循环目录而忽略当前正在复制的文件?

假设你有两个进程,一个写文件和一个写文件:

  1. 将你的文件写入临时文件名(/ tmp / filename)
  2. 一旦复制完成,立即将其链接到您的目标目录。

使用此策略,缩略图进程将监视目标目录中的更改,现在可以保证只包含完整的文件。

请参阅fs.watch ,它允许您“观察”目录中的更改。

find文件后,以字节为单位获取当前大小,然后在1秒钟后检查文件,并检查文件大小是否仍然相同。 如果不是,则表示该文件正在写入。