使用netcat在网络中快速复制大文件

平时在工作中,总要时不时的在不同的服务器或计算机之间传递和复制文件。通常的做法是使用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. 请参考系统的命令手册。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,针对您的问题,我可以提供以下解答: 1. 静态编译netcat 在Linux系统上,使用静态编译的方式编译netcat,可以使得生成的二进制文件不依赖于系统的动态链接库,方便在其他系统上使用。具体步骤如下: ``` # 下载最新版的netcat源码 wget https://downloads.sourceforge.net/project/netcat/netcat/0.7.1/netcat-0.7.1.tar.gz # 解压源码 tar -xvf netcat-0.7.1.tar.gz # 进入源码目录 cd netcat-0.7.1 # 配置静态编译选项 ./configure --disable-shared --enable-static # 编译 make # 安装 make install ``` 2. 交叉编译netcat在路由器上使用 如果您想在路由器上使用netcat,需要进行交叉编译。具体步骤如下: ``` # 下载路由器的交叉编译工具链 wget http://downloads.openwrt.org/releases/18.06.2/targets/ar71xx/generic/openwrt-sdk-18.06.2-ar71xx-generic_gcc-7.3.0_musl.Linux-x86_64.tar.xz # 解压交叉编译工具链 tar -xvf openwrt-sdk-18.06.2-ar71xx-generic_gcc-7.3.0_musl.Linux-x86_64.tar.xz # 进入交叉编译工具链目录 cd openwrt-sdk-18.06.2-ar71xx-generic_gcc-7.3.0_musl.Linux-x86_64 # 配置交叉编译环境变量 export STAGING_DIR=`pwd`/staging_dir export PATH=$PATH:$STAGING_DIR/toolchain-mips_24kc_gcc-7.3.0_musl/bin # 下载最新版的netcat源码 wget https://downloads.sourceforge.net/project/netcat/netcat/0.7.1/netcat-0.7.1.tar.gz # 解压源码 tar -xvf netcat-0.7.1.tar.gz # 进入源码目录 cd netcat-0.7.1 # 配置交叉编译选项 ./configure --host=mips-openwrt-linux --disable-shared --enable-static # 编译 make # 将编译好的二进制文件拷贝到路由器上 scp nc root@192.168.1.1:/usr/bin/ ``` 上面的步骤是以OpenWrt路由器为例进行说明的,如果您使用的是其他型号的路由器,需要根据实际情况进行调整。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值