FTPが遅い
FTPが遅い
地理的にサーバーとクライアントの距離が離れている(地球1/8周分くらい。経度でいうと45度くらい)と、大量のファイルを転送しようとするとかなり遅くなります。
多分技術的な制限事項だと思うので、大量のファイルを転送する場合にはファイルを一つに圧縮した方がよいです。確認してませんが、圧縮しなくとも、tarなどで一つのファイルにアーカイブするだけでもある程度効果はあると思います。
なんで地理的に離れていると転送速度が遅くなるの?
FTPでファイルを転送するときにはファイルを一つ転送するたびに、サーバーもしくはクライアントは接続を開きます。この接続を開くときに、一般にTCPという方法で接続を開くのですが、接続を開くのに時間がかかります。
詳しくはここでは書かないですが、3wayハンドシェイクと呼ばれる方法で接続を開いているためです。
簡単に書くと、一つの接続を開くのにサーバー、クライアント間で3回通信します。
重いのはこの3wayハンドシェイクで、転送が始まれば帯域さえ確保されていれば論理的に転送速度に極端にはかわらなかったと思います。離れれば離れるほど不安定な要素は増えるので遅くなる確率は増えると思いますが。
対策
ftpではファイルを転送するときにファイル一つ一つに対して接続を作成するため、ファイルを一つにまとめてしまえばいいと思います。tarとか、zipとか。ただし、サーバー側でsshが使えない場合には圧縮ファイルが解凍できないのでどうしたらよいのでしょうね? よくわかんないです。
sftpとかscpとかはどうやって転送しているのか知らないので、早いのかどうかわかりません。scpはファイル一つずつ転送しているっぽいのでftpとあんまり大差ないかも。
ということで気づいたのでメモ書きしてみました。
うろ覚えの記憶なので間違ってたらごめんなさい。