ファイルが machine1/dir1 から machine2/dir2 にコピーされます。作成された新しいファイルのために、dir2 に inotify ウォッチを追加しました。ファイルが大きい場合、新しいマシンで完全に処理されるまでに数秒かかる場合があります。私が間違っていなければ、inotify はイベントを検出するとすぐにアプリケーションに通知します。では、ファイルの状態を確認する必要がある場合、どのようにすればよいでしょうか?
質問する
1361 次
3 に答える
3
ダウンロードしたファイルを一時的なファイル名で (または他のディレクトリに) 保存し、ファイルが正常に移動されたら、予想されるファイル名に名前を変更します。
たとえば Nginx では、このメソッドを使用してキャッシュ データを保存します。キャッシュ データは最初に一時ファイルに書き込まれ、次にキャッシュ ディレクトリの最終的な場所に移動されます。完全なファイル コピーの代わりに安価でアトミックな名前変更 syscall が実行されるため、両方の場所で同じファイル システムを使用することをお勧めします。
于 2012-08-27T07:36:24.827 に答える
2
アプリケーションの環境や要件に依存するため、これに答える方法はありません。ファイルが 60 秒間変更されていないことを確認する必要があるかもしれません。数秒ごとに確認する必要がある場合があります。場合によります。
于 2012-08-27T07:30:33.197 に答える
1
IN_CLOSE_WRITE の使用は、あるマシンから別のマシンへの唯一の scp である場合に機能します。それ以外の場合は、あるマシンから別のマシンにファイルをアップロードする方法によって異なります。1回限りの open と close の場合、 IN_CLOSE_WRITE がそれを行う方法です。
上記の両方の答えは、私たちがそれを行う方法に応じて意味があります.
于 2012-08-29T14:37:10.247 に答える