3

コンピューター間で同期されているファイルを含むフォルダーがあります。コンピューターAからファイルをアップロードした後、コンピューターBのDropboxフォルダーから別のフォルダーにファイルをコピーしたいと思います。Dropboxフォルダが更新されたことをどのように検出できますか?Dropboxフォルダーを定期的にチェックできますが、もっと洗練された解決策があるのではないでしょうか。

4

3 に答える 3

2

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

ループが完了したとき。

于 2012-12-23T15:01:26.240 に答える
2

いいえ!(受け入れられた答えに関して)

Dropboxは現在(2012年には異なっていた可能性があります)、、、またはその他の直感的な選択をIN_CLOSE_WRITEトリガーしません。IN_MODIFYDropboxはコンテンツを一時ファイルに移動し、一時ファイルをDropboxディレクトリに戻します。このようにトリガーされたinotifyイベントは、、IN_MOVE_TOおよびIN_MOVE_FROMです。

したがって、incrontabの説明は理想的には次のようになります。

/path/to/watched/dir IN_MOVE_TO,IN_CREATE,IN_DELETE /path/to/script
于 2014-10-15T22:57:49.920 に答える
2

前述のように、ドロップボックスはIN_CREATE、IN_DELETE、IN_MODIFYなどをトリガーしません。IN_MOVED_TOとIN_MOVED_FROMをトリガーします。Debian8で検証済み。

于 2015-12-30T18:41:19.350 に答える