如何检测Dropbox文件夹何时更新?

我有一个文件夹与计算机之间正在同步的文件。 从计算机A上传文件后,我想将它们从计算机B的Dropbox文件夹复制到另一个文件夹。 如何检测Dropbox文件夹何时更新? 我可以定期检查Dropbox文件夹,但也许有一个更优雅的解决scheme?

检出inotify或incrond ,一旦检测到文件夹中的更改,就可以使用这些工具之一运行脚本。 如果你选择incrond你可以运行incrontab -e并添加如下内容:

 /path/to/watched/dir IN_CLOSE_WRITE,IN_CREATE,IN_DELETE /path/to/script 

例如,您可以在脚本中启动一个循环:

 [[ $(dropbox filestatus /path/to/watched/dir) != "" ]] 

要么:

 [[ $(lsof -p $dropbox_pid | grep 'REG|DIR.*/path/to/watched/dir') != "" ]] 

接着:

 cp /path/to/watched/dir /path/to/copy/dir 

当循环完成。

没有! (关于接受的答案)

目前的Dropbox(2012年可能有所不同)不会触发IN_CLOSE_WRITEIN_MODIFY或任何其他直观的选择。 Dropbox将内容移动到临时文件,然后移回到Dropbox目录。 这样触发的inotify事件是IN_MOVE_TOIN_MOVE_FROM

所以你的incrontab指令应理想阅读:

 /path/to/watched/dir IN_MOVE_TO,IN_CREATE,IN_DELETE /path/to/script 

如上所述,dropbox不会触发IN_CREATE,IN_DELETE或IN_MODIFY等,它会触发IN_MOVED_TO和IN_MOVED_FROM。 在Debian 8上进行验证。