今回構築しているシステムでFTPを使用します。
当方はFTPサーバー側で、いくつかのファイルを受信します。
1.転送終了確認をどうするか?
サイズの大きいファイルを受信します。
転送が終了したか否かを確認する方法はありますか?
大きいファイルの後に別のサイズの小さいファイルを転送し、それが生成されているか否かで確認しようと思っていますが、大丈夫でしょうか?
それとも別に方法がありますか?
2.転送の信頼性について
注、セキュリティの問題ではなく、正しく転送できるか否かということです。
いろいろHPを見ていると、FTPは信頼性のないプロトコルだというようなことが書いてありますが、実際はどうなのでしょうか?
CRCなどのチェックは行っているようですが?FTPサーバーで違いがありますか?
信頼性がない場合、正しく転送できたか否かを確認するには、どのようにすればよいでしょうか?
別にMD5などの値を転送して確認するというようなことも考えていますが、どうでしょうか?
3.FTPではなく、SFTPを使用しようと思っていますが、上記の点についてはどうでしょうか?
>1.転送終了確認
FTPサーバで proftpd を使う場合は HiddenStores という設定ができます。
これを on にするとアップロード中のファイル名が「.in.(元のファイル名)」となり、アップロード完了後に元のファイル名にリネームされるようになります。
サーバ側の受信監視プログラムは対象ディレクトリをチェックする際に .in. で始まるファイル名を無視すれば、アップロード途中のファイルを処理してしまうことが防げます。
http://proftpd.org/docs/directives/linked/config_ref_HiddenStore...
>2.転送の信頼性
ファイルの破損確認なら md5 ファイルなどを一緒にあげてもらうのが一般的だと思います。
> 1.転送終了確認をどうするか?
とある商用サイトの注文データをホストに転送させることをしましたが、
ファイルサイズが大きい場合は分割して送ってました。
理論上、数Gbyteとか送る可能性もあるので100Mbyte単位に分割して送る仕様にしました。
受信側のバッチ処理の開始時刻までに送信データを送る必要があり、
1ファイルだとの送信失敗したとき、また1から送りなおす必要があり、
ファイルを分割しておけば送信に失敗しても、そのデータから送信すればよく
時間の短縮になります。
最後に分割したファイル一覧、サイズのデータを送信し、
受信側はそれを見てファイルとサイズが一致していることを確認することで
データが正常に転送終了されたことにしていました。
> 2.転送の信頼性について
確かにMQよりは信頼性がありませんが、TCP/IPなので送ったデータは正しいと保障されているはずです
問題はあるサイズのデータの転送に一体どれぐらいの時間がかかるかどうかです
これは誰にも保障できませんし、転送に失敗する可能性もあります。
# もちろん、転送に失敗した場合はサーバ、クライアント共に検知できます
銀行などのデータ転送の多くはIBM-MQかその類似品が使われています。
もし、FTPよりも高い信頼性やスケーラビティを求めているのでしたら
IBM-MQを使うことをお勧めします。
> 3.FTPではなく、SFTPを使用しようと思っています
SFTPはどちらかというとセキュリティの為です。
FTPでは通信内容が平文流れてしまうので、
盗聴されないように暗号化をして通信を行うのがSFTPです。
# telnetとsslの関係です。
ありがとうございます。
実務で使われた経験は、参考になります。
ありがとうございます。非常に参考になります。
文字数の制限で、質問には書けなかったのですが..
OSは未決定ですが、一応Linuxのつもりです。
無人で処理する必要があります。