Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4728257
  • 博文数量: 930
  • 博客积分: 12070
  • 博客等级: 上将
  • 技术积分: 11448
  • 用 户 组: 普通用户
  • 注册时间: 2008-08-15 16:57
文章分类

全部博文(930)

文章存档

2011年(60)

2010年(220)

2009年(371)

2008年(279)

分类: LINUX

2010-06-17 17:30:44

平时在工作中,总要时不时的在不同的服务器或计算机之间传递和复制文件。通常的做法是使用scp命令将文件传到目标机器上。对较小文件的传递看不出什么不同,但当复制比较大的文件时,如超过10G以上时,使用scp会比较慢,原因是scp在传递时要用将数据加密,这样就增加了cpu时间和数据长度。如果只在本地网络中(安全性高,稳定性高)复制文件时,有一个小技巧使用netcat来进行大文件的快速复制。

 

在目标机器(IP:192.168.1.7)上先建一个空文件夹,在新建文件夹路径中使用如下命令:

Linux shell代码
  1. netcat -l -p 5555 | tar xvf -  

 在源机器上要复制文件的目录中,使用如下命令:

Linux shell代码
  1. 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. 请参考系统的命令手册。

阅读(3656) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~