フォルダーを監視するbashスクリプトがあります。フォルダーに何かが追加された場合、スクリプトはすべてのコンテンツを監視フォルダーと一緒に定義された宛先に移動します。
問題:-スクリプトは、FileZilla(FTP)を介して監視フォルダー内のファイルを宛先フォルダーに移動できません。シェルプロンプトを使用してファイルを監視フォルダーに手動で移動すると、スクリプトは機能します。 FTPは、正しく機能しない唯一の形式です。
どのような問題が考えられますか?
スクリプトは次のとおりです。
inotifywait -m ~/folderA/fileA -e moved_to |
while read path action file; do
#echo "The file '$file' appeared in directory '$path' via '$action'"
# do something with the file
mv ~/folderA/fileA/* "/folderB/myNewDest"
done
最初に、inotifywait -e moved_to
のみを対象ディレクトリに監視する移動を設定することにより、writtenまたはoverwrittenであったファイルの監視を省略します。そこに、たとえばFilezilla
。 -e modify -e create
をコマンドに追加するか、いくつかのinotifywait
イベントを無視する説得力のある理由がない限り、-e whatever
オプションをすべて破棄します。
第二に、mv ~/folderA/fileA/* "/folderB/myNewDest"
コマンドでfromファイルを引用しないと、愚かなファイル名に捕まるリスクがあります。 foo;rm -rf *
。私はお勧めします
find ~/folderA/fileA/ -maxdepth 0 -type f -print0 | \
xargs -0 mv --target-directory=/folderB/myNewDest --
同じことをしますが、より安全です。