CentOSのドロップボックスに表示されたらすぐにファイルを別のフォルダーに移動する方法を探しています。
いくつかの手がかりを求めてインターネットを調べましたが、inotify
を使用して、ファイルを表示されたとおりに処理するスクリプトを呼び出す必要があるという事実以上のことはできません。
私のBASHの知識は非常に限られているので、これをPHPで記述できるかどうかは疑問です。
つまり、inotify
を使用して表示されたらすぐにファイルを別のフォルダーに移動するにはどうすればよいですか?
これは簡単なアプローチです。
#!/usr/bin/env bash
dir=/home/ortix/Dropbox/new/
target=/home/ortix/movedfiles/
inotifywait -m "$dir" --format '%w%f' -e create |
while read file; do
mv "$file" "$target"
done
移動したいファイルのタイプについての詳細を使用して、チェック、ロギングなどを追加できます...
コマンドinotifywait
は、指定されたディレクトリの内容が変更されるたびにメッセージを出力します。適切なイベントを選択する必要があります。ファイルが作成されたときではなく、Dropboxがファイルのダウンロードを完了したときです。 Dropboxがどのように動作するのか正確にはわかりません。最終的な場所でファイルに書き込む場合は、close_write
イベント。ファイルに一時的な場所に書き込んだ後、ファイルを所定の場所に移動する場合は、moved_to
イベント。オプションを渡す-m -q
からinotifywait
まで、イベントをリッスンし続け(デフォルトでは、次のイベントのみを待機)、関連するメッセージのみを出力します。
cd ~/Dropbox/myfolder
inotifywait -m -q -e close_write --format %f . | while IFS= read -r file; do
cp -p "$file" /path/to/other/directory
done