FTPが完了したことを確認するにはどうすればよいですか?


2

クライアントがFTP経由でFreeBSDサーバーにアップロードするファイルを処理するcronジョブがあります。cronジョブは1時間に1回実行され、通常、各ファイルの処理には数秒しかかかりません。

cronジョブは、クライアントのアップロードディレクトリを検索し、新しいファイルをtmpディレクトリに移動します。次に、ファイルを処理し、最終ディレクトリに移動して、Webサイトから一般に公開します。

問題は、たまに新しいファイルがアップロードされるときにcronジョブが実行されることです。半分アップロードされたファイルをtmpディレクトリに移動し、それを処理しようとしますが、もちろん失敗します。

質問:アップロードされたファイルが完全かどうかを確認するにはどうすればよいですか?私が考えることができる唯一のことは、ファイルサイズをチェックして、それが変化しているかどうかを確認することです。アップロードの完了時に設定されているフラグなどがありますか?

回答:


4

最も安全な方法は、FTPサーバーのログで「転送完了」メッセージを検索することです(ソフトウェアによって異なります)。

それが不可能な場合は、ある程度安全な時間(10分など)触れていないファイルのみを処理します。を使用findして、これらのファイルのリストを取得します。たとえば、10分間、アップロードは$UPLOAD_DIR

find $UPLOAD_DIR -amin +10

+手段「より」。詳細についてはman 1 find、を参照してください。


ファイルがその直後に2回アップロードされる場合、これは失敗する可能性があります。
マリアン

1

fuserトリックを行うことがあります。これにより、ファイルを使用しているプロセスを確認できます。使用しているプロセスがない場合にのみ移動します。


0

cronジョブは識別可能なプロセス名を作成しますか?その場合、psとgrepを使用して、古いプロセスがまだ実行されているかどうかを確認します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.