scpがなぜそんなに遅く、どのように速くすることができますか?

scpがなぜそんなに遅く、どのように速くすることができますか?

バッチファイルをコピーしようとしていますが、scp非常に遅いです。以下は、10個のファイルがある例です。

$ time scp cap_* user@host:~/dir
cap_20151023T113018_704979707.png    100%  413KB 413.2KB/s   00:00    
cap_20151023T113019_999990226.png    100%  413KB 412.6KB/s   00:00    
cap_20151023T113020_649251955.png    100%  417KB 416.8KB/s   00:00    
cap_20151023T113021_284028464.png    100%  417KB 416.8KB/s   00:00    
cap_20151023T113021_927950468.png    100%  413KB 413.0KB/s   00:00    
cap_20151023T113022_567641507.png    100%  413KB 413.1KB/s   00:00    
cap_20151023T113023_203534753.png    100%  414KB 413.5KB/s   00:00    
cap_20151023T113023_855350640.png    100%  412KB 411.7KB/s   00:00    
cap_20151023T113024_496387641.png    100%  412KB 412.3KB/s   00:00    
cap_20151023T113025_138012848.png    100%  414KB 413.8KB/s   00:00    
cap_20151023T113025_778042791.png    100%  413KB 413.4KB/s   00:00    

real    0m43.932s
user    0m0.074s
sys 0m0.030s

不思議なことに、転送速度は413KB/s程度で、ファイルサイズは413KB程度なので、実際には1秒に1つのファイルを転送する必要がありますが、各ファイルあたり約4.3秒かかります。

このオーバーヘッドがどこで発生するのか、そしてより速くする方法はありますか?

ベストアンサー1

単一の接続を使用してすべてのソースファイルを転送するrsync(over)を使用できます。ssh

rsync -avP cap_* user@host:dir

1つもなければrsync(なぜダメですか??)tarwith this を使用すると、一時sshファイルの生成を回避できます(両方のオプションは同じです)。

tar czf - cap_* | ssh user@host tar xvzfC - dir
tar cf - cap_* | gzip | ssh user@host 'cd dir && gzip -d | tar xvf -'

rsync他のすべての条件が同じであれば、停電時に再開することができるので好ましい。

おすすめ記事