全部博文(930)
分类: LINUX
2010-06-17 17:30:44
平时在工作中,总要时不时的在不同的服务器或计算机之间传递和复制文件。通常的做法是使用scp命令将文件传到目标机器上。对较小文件的传递看不出什么不同,但当复制比较大的文件时,如超过10G以上时,使用scp会比较慢,原因是scp在传递时要用将数据加密,这样就增加了cpu时间和数据长度。如果只在本地网络中(安全性高,稳定性高)复制文件时,有一个小技巧使用netcat来进行大文件的快速复制。
在目标机器(IP:192.168.1.7)上先建一个空文件夹,在新建文件夹路径中使用如下命令:
netcat -l -p 5555 | tar xvf -
在源机器上要复制文件的目录中,使用如下命令:
tar -cf - . | netcat 192.168.1.7 5555
可以看到,这个小技巧是netcat和tar命令的搭配,在目标机器上打开端口5555(可更改),并将接收的数据通过管道输入给tar的解包命令,在源机器上先用tar将多个文件打包,然后输入给netcat并传送给目标机器。
tar命令也可以用z参数对数据进行压缩处理,同样在接收端也要加上z参数来解压。tar命令也可用其它查看文件命令替换,如直接用cat打开文件等。其最终都是利用netcat建立的纯数据网络通道进行文件的快速传递,效率可以提高20%~40%左右。
注:在不同的Linux发布中,netcat和tar的命令格式会略有不同,如有些Linux中,netcat命令叫nc. 请参考系统的命令手册。