inotify、イベント コード IN_CLOSE_WRITE を使用してみます。
Apache "Mina" ftp サーバー (Java) は、こちらで説明されているように、失敗したアップロードの検出など、必要なことを実行できる可能性があります
引用:
<ブロック引用>Ftplet.afterCommand から、応答を見ることができるはずです。 FtpServer が検出できる (SocketException または IOException を引き起こす) 失敗した転送の場合、これは 426 または 551 のような値になります。
応答コードを含む ftplet の概要はこちら
afterCommand メソッドの署名:
FtpletResult afterCommand(FtpSession session, FtpRequest request, FtpReply reply)
reply.getCode()
をチェックします オーバーライドされたメソッドで。 DefaultFtplet
をサブクラス化する必要があります Ftplet
を実装するのではなく インターフェイスをゼロから作成します。
DefaultFtplet::afterCommand
に注意してください に、どのクライアント コマンドが応答されているかを検出する方法を示します。 STOR
を確認できます または STOU
および応答コード 426
または 551
失敗したアップロードを検出します。
ただし、クライアント アプリがファイルが実際よりも短いかのように転送を処理することを決定した場合、これはクライアントによって意図的に終了されたアップロードを検出しない場合があります。意図せずに接続が切断された場合は、応答コード チェックが機能すると思います。テストでは、クライアント アプリを強制終了するか、クライアント マシンのネットワーク インターフェイスをダウンさせることができます。
成功したアップロード (元の質問) を処理するには、代わりに成功の応答コード、つまり 226
を探すことができます。 .