バッチファイルをコピーしようとしていますが、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
(なぜダメですか??)tar
with 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
他のすべての条件が同じであれば、停電時に再開することができるので好ましい。