我有一个文件夹,其中包含在计算机之间进行同步的文件。从计算机A上传文件后,我想将它们从计算机B的Dropbox文件夹复制到另一个文件夹。如何检测Dropbox文件夹何时更新?我可以定期检查Dropbox文件夹,但也许有一个更优雅的解决方案?
答案 0 :(得分:1)
结帐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
循环完成后。
答案 1 :(得分:1)
没有! (关于接受的答案)
Dropbox目前(2012年可能有所不同)不会触发IN_CLOSE_WRITE
,IN_MODIFY
或任何其他直观选择。 Dropbox将内容移动到临时文件,然后将其移回Dropbox目录。由此触发的inotify事件为IN_MOVE_TO
和IN_MOVE_FROM
。
因此,理想情况下,您的incrontab说明应为:
/path/to/watched/dir IN_MOVE_TO,IN_CREATE,IN_DELETE /path/to/script
答案 2 :(得分:1)
如上所述,dropbox不会触发IN_CREATE,IN_DELETE或IN_MODIFY等。它会触发IN_MOVED_TO和IN_MOVED_FROM。在Debian 8上验证。