大容量ファイルのinotifywaitデバウンス

大容量ファイルのinotifywaitデバウンス

リモートディレクトリに展開するファイルをアップロードします。リモートサーバーには、ディレクトリ内の新しいファイルを監視するスクリプトがあります。

inotifywait --monitor --event create --format '%f' --quiet /foo

新しいファイルが検出されると、デプロイプロセスが開始されます。

問題は、アップロードに時間がかかり、ファイルが書き込みを開始するとすぐに検出されることです。そのため、部分ファイルを使用しようとしているため、展開は失敗します。

inotifywait新しいファイルが完全に作成された後にのみ報告されるようにジッタを削除する方法はありますか?

答え1

経験したように、createイベントに焦点を当てることはあまり役に立ちません。これらのイベントはファイルが生成されたときに発生しますが、データが記録されたのか、記録されたのかはわかりません。完全それにデータを書きなさい。

通常、監視またはcloseイベントclose_writeが必要です。マニュアルページから:

活動

  • close_write

    監視されたファイルまたは監視されたディレクトリのファイルが書き込み可能モードで開かれて閉じました。これは必ずしもファイルが作成されたことを意味するわけではありません。

  • close_nowrite

    監視されたファイルまたは監視されたディレクトリのファイルが読み取り専用モードで開かれて閉じました。

  • close

    監視されたファイルまたは監視されたディレクトリ内のファイルは、開いている方法に関係なく閉じられます。これは実際に close_write およびを受信することによって行われるため、close_nowrite受信されたクローズイベントはCLOSEではなくそれらの1つに出力されます。

関連情報