3

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

4

3 回答 3

2

签出inotifyincrond,一旦检测到文件夹中的更改,您可以使用其中一种工具运行脚本。如果您选择incrond,您可以运行incrontab -e并添加如下内容:

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

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

[[ $(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

当循环完成时。

于 2012-12-23T15:01:26.240 回答
2

不!(关于接受的答案)

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
于 2014-10-15T22:57:49.920 回答
2

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

于 2015-12-30T18:41:19.350 回答