安定してファイルの転送をする仕組みを教えてください。
できるだけ容量の大きいものでも問題ない仕組みをご存知であればお願いします。
CSVファイルにこだわっているわけではありませんので、
別の形式でも結構です。
http://www.infoscience.co.jp/technical/rsync/rsync.html
rsync はいかがでしょうか?
サーバ側にRSHかSSHで接続できる環境が必要になりますが、SSHであればファイル転送の通信自体を暗号化することもできるので、認証をプレインテキストで行うFTPよりはセキュリティ的にも安全です。それと、-c オプションをつけることで、ファイルを送信し終わったあとに転送元と転送先のファイルのチェックサムの検証がされ、壊れていた場合は再送をします。FTPではこのような仕組みがないためファイルが壊れた場合もわかりませんが、rsyncなら大丈夫です。実際、DBのファイルのバックアップ等ちょっとでも壊れると取り返しのつかない影響を受けるような環境で役に立ちました。このオプションは重宝すると思います。
例えば、こんな感じでファイルを送ることができます。オプションについては上記URLに説明が載っています。
$rsync -e ssh -arpvc [送信元ファイル] user@192.168.100.101:/[送信先ディレクトリ]
>FTPは不安定で接続ができなかった
どのような原因があるのかわかりませんが、スクリプト上で通信結果の確認ができるような仕組みを作り、問題があった場合にはメール等で知らせるなどの対策が必要そうですね。これもSSH経由でリモートシェルを駆使すればできるとおもいます。
FTPが不安定なのが回線によるものだと別手段でも同様の結果になってしまうかもしれません。
まずはそこを調査されてはいかがでしょうか?
他の手段としてはsshを使ったコピーコマンドscpや、ファイル同期を行うrsyncなどがあります。
お勧めは認証もしっかりしているscpですね。
回線・・に関してはISDN回線(ダイヤルアップ)を通して接続していた時は確かに失敗が多かったです。
それを現在は通常のインターネット経由にしているのですが、それでも失敗する時があるのです。
また、上の回答の返答にも書きましたが、基幹システム側がwindowsの際の方法はご存知ないでしょうか?
私の携わったプロジェクトのうち、WEB←→基幹間の通信方法でFTPを採用している例は80%以上です。
理由は汎用性と安定実績があるからです。
1番通信回数の多いシステムでは、10分毎,365日運用ですが今も安定動作しています。
但し、CSVテキストを直接送ることはしないでテキスト圧縮またはファイル分割処理を入れ極力通信時間を減らす努力はしています。テキスト圧縮でサイズが1~2%になります。
※接続が不安定な場合に、FTP用に帯域確保することで安定したこともありました。
代替手段では無いのでポイント不要です。ご参考までに
参考になりました。
ありがとうございます!
1の回答者です。Windows上でSSHサーバを立てる方法はいくつかあります。これらを使えば、前回の回答にあるようなssh経由のrsyncが行えます。
WinSSHD 有料のものらしいです。設定が便利そうですが使ったことはないです。
WindowsにCygwinベースのsshdのインストール方法が載ってます。CygwinはWindows上でUNIXのようなコマンドが利用でき便利ですが、SSHDを動かすことで、リモートからの作業もUNIXのように行えます。導入が多少面倒ですが、お金もかからないので試してみる価値はあると思います。この方法は実際に使っていて、安定して動くので私としてはお勧めです。
ありがとうございます!参考になりました!
基幹系システムにおける異種プラットフォーム間のファイル転送といえばよく聞く名前がHULFTです。
有償のプロダクトですがそう高くはなかったと記憶しています。
その代わりあなたがFTPでした苦労をセゾン情報システムさんが代行してくれるわけです。
文字コード変換、圧縮送信、暗号化、1対多送信などが出来ます。。。
HULFTですか・・知りませんでした。
ありがとうございます。
回答ありがとうございます。rsyncがありましたね。
すみません、1点書き忘れましたが、基幹システム側はWindows環境のことがあります。
その場合の方法もご存知ないでしょうか?