inotifywaitを使用してファイルがdropboxフォルダにロードされたときにファイルを移動します。

inotifywaitを使用してファイルがdropboxフォルダにロードされたときにファイルを移動します。

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

移動したいファイル形式の詳細については、いくつかの確認、ロギングなどを追加できます。

関連情報