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