
CentOSのdropboxにファイルが表示されたらすぐに別のフォルダにファイルを移動する方法を見つけようとしています。
inotify
いくつかの手がかりを見つけるためにインターネットを検索しましたが、ファイルを処理するためにスクリプトを呼び出す必要があるという事実以外には、追加情報を得ることはできません。
私のBASHの知識は非常に限られているので、これをPHPで書くことができるかどうか疑問に思います。
つまり、ファイルが表示されるとすぐに別のフォルダにどのように移動できますかinotify
?
答え1
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
答え2
簡単な方法は次のとおりです。
#!/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
移動したいファイル形式の詳細については、いくつかの確認、ロギングなどを追加できます。