18955


**現状**  
・FileZilla使用  
・FTPダウンロード  
・ファイル数が多い(5万件以上)と、処理完了まで時間がかかる

**知りたいこと**  
・高速ダウンロードする方法  
・FTPではなくSSHで接続すると、ダウンロード速度は早くなる？  
・あるいは、複数ディレクトリを圧縮してダウンロードすると速度は速くなる？  
・コマンドは？  
・下記で、対象ディレクトリ内の全ファイルを再帰的に圧縮できるのでしょうか？

[code]

    $ zip archive -r 対象ディレクトリ
    
[/code]


CC BY-SA 3.0
2015-05-28T11:27:22.377
10725
2015-11-18T02:45:11.983
2015-11-18T02:45:11.983
7886
7886
question
network
「CentOSサーバ」よりファイルをダウンロードする際、出来るだけ転送時間を短縮したい


サイトとのことですのでVPSはLinuxでしょうか？  
でしたらSSHでログインすることは可能ですね？

SSHはどんなものか分からない場合は検索等をするか再度質問してください。

こういう場合はSSHなどを使って複数のファイルを一ファイルに圧縮。  
そのファイルをダウンロードすると接続が途中で切れたりすることもなく簡単です。


CC BY-SA 3.0
2015-05-29T00:25:38.627
10738
2015-05-29T00:57:55.480
2015-05-29T00:57:55.480
8239
8239
10725
answer


速度とか高速という単語に引っかかるのですが、時間短縮したいという意図だと思いましたので 分かる範囲で回答します。

SSH (SCP) は暗号化するので遅くなります。

FTPは十分に速い部類の通信プロトコルですが、GUIの FTPクライアントが 5万件超のファイル一覧を取得すると
その結果を受信するのに時間がかかってしまうことも考えられます。  
できれば コマンドの ftp を覚えて 最短のオペレーションで ファイルを `get` するのがいいと思います。

もしも、ほんの少しでも早くしたいなら `nc` を使います。

> ・あるいは、複数ディレクトリを圧縮してダウンロードすると速度は速くなる？

オーバーヘッドとデータ量が減るので時間短縮が期待できます。  
ただ転送速度は変わらないです。

> ・コマンドは？

Unix系でよく使うのは tar + gzip だと思います。  
次のコマンドでアーカイブと圧縮を行い、 出来上がった `/var/tmp/hoge.tgz` をFTPで転送してください。

送信元サーバー

[code]

    $ cd /path/to/コピー元/
    $ tar cfz /var/tmp/hoge.tgz .
    
[/code]

コピー先

[code]

    $ ftp 送信元サーバーのIP
    USER xxxxx
    PASSWORD xxxxx
    ftp> cd /path/to/対象ディレクトリ/
    ftp> binary               (バイナリモード)
    ftp> get hoge.tgz         (hoge.tgz をダウンロード)
    ftp> bye                  (切断)
    
[/code]

わずかでも速くしたければ `nc` を次のように使ってみてください。

コピー先 (tcp/12345 を待ち受けて、受け取ったデータを tar に渡して展開)

[code]

    $ cd /path/to/展開先/
    $ nc -l 12345 | tar xfvz - 
    
[/code]

送信元 (tar でアーカイブと圧縮を行い、データを nc に渡して コピー先の tcp/12345 ポート宛に転送)

[code]

    $ tar cfz - /path/to/コピー元/ | nc -w 1 コピー先のIP 12345 
    
[/code]

> ・下記で、対象ディレクトリ内の全ファイルを再帰的に圧縮できるのでしょうか？
>
> $ zip archive -r 対象ディレクトリ

その認識で合ってます。


CC BY-SA 3.0
2015-11-17T14:46:08.043
18955
2015-11-17T14:46:08.043
5008
10725
answer