问题
传输文件,如果只是大文件传输,还是比较容易的,基本上网络、磁盘很容易能够到达满速,只要想办法提升这两方面就可以更快的传输。
但是如果是海量的小文件、大量文件,那么基于磁盘寻址的速度,IO受限会很高,并且同时会在网络上给予相同的限制
这里我们说说如何在海量文件、大量文件中尽可能的提升传输速度
方案
本机不同磁盘
复制目录
tar cvf – /home/src_dir | tar xvf - -C /opt
复制文件
tar cf – access.log |tar xf - -C /opt
不同主机
用nc来监听一个端口,任意都行,只要不被占用;并且将收到的数据用tar展开。-l 代表监听模式
nc -l 34183 | tar -C /data1datasets/norm/ -zxf -
接着在发送端上通过nc和 tar发送data_01目录。使用一致的34183的端口
tar -zcvf - data_01 | nc 192.168.0.1 34183
PS. 其他辅助手段
以上很多工具都是单线程的,并且不一定能充分利用cpu、io来专门处理这个事情,所以可以换一个角度来思考,如果子目录进行了分级,那么可以先对一个子目录调用上面的方法,如果观察到cpu、io资源还比较充足,那么可以同时对其他子目录进行操作,使用并行的方式继续提升速度
评论