日々成長していくためのブログ

雑記ブログ。日々新しい発見をして、考えをまとめていきたい。

圧縮する場合としない場合のファイル転送時間の差について

大きなファイルやフォルダをローカルコンピュータからサーバーに転送する際は、.tar.gzファイルなどに圧縮してから転送したほうが、そのまま送るよりも良いのだということを、身をもってしった。

 

ローカルからサーバーにファイル転送する際は、Macbookのターミナルで作業する場合、

scp (ファイル) (ユーザー名):(サーバの場所)

のようにする。僕は大きなまとまったファイルを転送する際に、いつもディレクトリを適当に作って、そこにファイル群を放り込んで、

scp -r (フォルダ) (ユーザー名):(サーバの場所)

のようにしていた。ただこうすると転送先や環境によって、どんなに小さなファイルでもファイル1個転送するのに無視できないくらいの時間がかかることを学んだ。転送時間がファイル数でリミットされてしまうのである。例えば1MB以下のファイルを送る時間が全て0.5秒であるとしよう。この場合、計2GBの7万個のファイル群を転送する際に、最低でも0.5*70000=35000秒~9時間程度の時間がかかってしまう。1MB以上のファイルも中にはあると考えると、転送時間はこれよりもかかってしまう。一方、tar.gzファイルに圧縮して一個のファイルを転送する場合、1MB/秒の速さでファイル転送できるとしたら、2GB/(1MB/s)=2000秒~33分で転送が完了する。圧縮したほうが17.5倍程度速く転送できるのである。

 

今後はファイル転送する際にはファイルを圧縮して転送するようにしよう。