在局域网内如果不考虑加密的话,我一般直接用nc传:
接收方: nc -l 1234 | tar xf -
发送方: tar cf - <files> | nc $接收方ip 1234
用nc传数据,跑满单核CPU可以跑到2.78Gbps的速度。(测试环境,cpu E5-2609,万兆网卡)
同样的环境,用scp传数据,跑满单核大概是550Mbps。
一般来说,局域网内的环境是可控的,所以加密并不是很重要,但如果环境所限,加密很重要的话,那么花费一些CPU、降低一些吞吐率是值得的。
如果要拷贝的数据可以有很高的压缩比例(例如源代码目录),那么可以在nc的基础上配合一些多线程的压缩工具(如pzip2)来充分使用CPU,提高吞吐率:
接收方: nc -l 1234 | pbzip2 -d -c | tar xf -
发送方: tar cf - <files> | pbzip2 -c | nc $接收方ip 1234
另外,与吞吐率无关,与用户体验有关的,可以考虑使用lftp+sftp的方式(一般openssh-server都默认开启了scp和sftp-server,能用scp的机器一般也会支持sftp,除非管理员专门关掉了):
lftp sftp://user@target/
可以用 get, put, mget, mirror 等命令来操作,使用体验要比裸敲scp或者rsync命令舒适很多。