标题:[实践OK]Linux在CentOS下的nc/ncat命令端口侦听在不同CentOS6/7的rpm包里有变化,linux nc命令传输文件(远程复制文件,传文件。),linux快速复制大量小文件方法 nc+tar,nc + tar 传送整个文件目录的方法。how-can-i-keep-netcat-connection-open? 出处:向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除 时间:Mon, 18 Dec 2017 11:55:06 +0000 作者:jackxiang 地址:https://jackxiang.com/post/9566/ 内容: 10.56.17.* 发送(向服务器上传文件): nc 10.5*.17.6 4444 < /home/xiangdong/xsrc-project_202302.sql 10.5*.17.*上接收(在CentOS上实践发现接收完就自动退出,Mac上面好像会一直在,和主动Ctrl+C): nc -l 4444 > /home/xiangdong/xsrc-project_202302.sql 特别注意:接收文件一端开端口 > ,发送文件一端 < ,IP 端口传文件,如果反了接收文件端开端口它接收完成后也还是不会自动退出,得自己估摸时间Ctrl+C: nc -l 4444 > /usr/local/lib/libzip.so.5.0.0 #接收端 > nc 10.71.11.4* 4444 < /usr/local/lib/libzip.so.5.0.0 #发送端 < 新增nc 传目录小文件,传输目录演示(方法发送文件类似),这个和单个文件的 < 和 >有点相反的味道, 服务开端口的是接收文件方,相当于是传文件给服务器端!!! 整体: nc -l 4444 |tar -zxvf - #接收端开10.73.234.25 4444端口 tar -zcvf - * | nc 10.73.234.251 4444 #传文件端连接端口机,中间横两边有空格! 步骤1,打开接收打包文件的端口(A机器先启动端口监听),如下: nc -l 4444 |tar zxvf - #测试管道后面最后必须是 - ,不能是其余自定义的文件名 nc -l 4444 |tar zxvf - php72/ php72/swoole-php72-4.2.12.el6.x86_64.spec ... 再次实践,接收部分有点问题,看步骤2: nc -l 4444 |tar zxvf - 步骤2,发送所有文件或某个文件(B机器打包文件并连接A机器打开的端口): 管道前面表示把当前目录的所有文件打包为 - ,然后使用nc发送给B机器 tar zcvf - * | nc 10.71.182.250 4444 #传整个目录有点慢,最好是传压缩包 tar zcvf - php72 | nc 10.71.182.250 4444 php72/ php72/swoole-php72-4.2.12.el6.x86_64.spec ... 再次实践,这个是放后面不是放前面,实践OK,前面tar 放前面不行AddTime:2019-05-28 nc 10.73.235.0 4444 | tar zxvf - nc客户端: ss -ntp|grep 4444 ESTAB 0 0 10.73.234.2**:35478 10.73.2*5.0:4444 users:(("nc",pid=54501,fd=3)) nc服务端: ss -ntp|grep 4444 ESTAB 0 0 10.73.2*5.0:4444 10.73.234.2**:35478 iostat 来自:https://blog.csdn.net/mtj66/article/details/74959287 From: https://blog.csdn.net/mtj66/article/details/74959287 传完不退出参数: how-can-i-keep-netcat-connection-open: -k Forces nc to stay listening for another connection after its current connection is completed. It is an error to use this option without the -l option. nc -l 4444 < /home/test/rpmbuild/RPMS/x86_64/openssl-1.0.1g-180911102225.el6.x86_64.rpm -k From: https://unix.stackexchange.com/questions/423407/how-can-i-keep-netcat-connection-open man nc nc -l -p 这个命令对于Linux CentOS的nc-1.84这个包的命令参数不是这样的,而是这样:nc -l 4444 > config.py,实践也是和ncat -l -p 4444 > config.py ,一样的可以传文件的,只是参数不一样罢了。 前提是这个NC,不是这个NC哟,否则命令失效(非此nc:rpm -qf /usr/bin/nc nc-1.84-24.el6.x86_64): 得是这个nc,否则nc -l -p会没法建立起侦听端口,会提示命令行参数有误: rpm -qf /bin/nc nmap-ncat-6.40-7.el7.x86_64 也就是说: 一)CentOS6.X想要侦听一个端口,得用nmap的RPM包,而简单的nc简单连接命令则要用nc-1.84。 二)CentOS7想要侦听一个端口或nc简单连接命令用一个nmap-ncat的RPM包就Ok了。 CentOS6.X: yum -y install nmap @centOS6.X: rpm -ql nmap /usr/bin/ncat /usr/bin/ndiff /usr/bin/nmap /usr/bin/nping yum -y install nmap-ncat @@centOS6.X: 无此包! 使用:ncat -l -n 4444 > a.txt CentOS7.X:(nmap是没有ncat的,ncat而是放在包:nmap-ncat里的。) rpm -qpl nmap-6.40-7.el7.x86_64.rpm @centOS7.X: /usr/bin/ndiff /usr/bin/nmap /usr/bin/nping rpm -ql nmap-ncat @centOS7.X: /usr/bin/nc /usr/bin/ncat 三)经实践尽管操作系统版本不同其RPM包不同,但CentOS6/7之前一个开端口一个传均无问题: (1)CentOS6.X向CentOS6.X传文件OK: ncat -l -p 4444 > config.py @CentOS6.X nc 10.71.182.17* 4444 < config.py @CentOS6.X (2)CentOS6.X向CentOS7.X传文件OK: ncat -l -p 4444 > config.py @CentOS7.X nc 10.71.182.17* 4444 < config.py @CentOS6.X (3)CentOS7.X向CentOS6.X传文件OK: ncat -l -p 4444 > config.py @CentOS6.X nc 10.71.182.17* 4444 < config.py @CentOS7.X 如果两台计算机之间突然需要传送一个文件,而一时又没有什么好用的通讯工具,也来不及开服务器的时候,那么可以使用nc来传送文件。方法如下: 接收者: $ nc -l -p 12345 > save_filename ; 12345为1024-65535的任意端口号 发送者: $ nc <接收者ip> 12345 < send_file 一)目的主机监听 nc -l 监听端口[ 未使用端口] > 要接收的文件名 ,如:nc -l 4444 > cache.tar.gz 实践如下: nc -l -p 4444 > memcached-3.0.3.tgz #@10.71.182.156 二)源主机发起请求 nc 目的主机ip 目的端口 < 要发送的文件 nc 192.168.0.85 4444 < /root/cache.tar.gz 实践如下: nc 10.71.182.156 4444 < /home/test/rpmbuild/SOURCES/memcached-3.0.3.tgz 三)查看是否拷贝完毕: ls /home/test/rpmbuild/SOURCES/memcached-3.0.3.tgz /home/test/rpmbuild/SOURCES/memcached-3.0.3.tgz nc + tar 传送整个文件目录: 接受方 nc -l 7788 |tar -zxvf - 发送方 tar -zcvf - dir |nc xx.xx.xx.xx 7788 dir 表示要传送的目录 来自:http://blog.csdn.net/u012333307/article/details/48562829 调试: -v打印出错信息 接收方:nc -v -l -p 8210 发送方:nc -v dest_ip 8210 注意:使用nc传文件时,需注意操作次序,receiver先侦听端口,sender向receiver所在机器的该端口发送数据。否则发送失败。 来自:http://blog.csdn.net/slvher/article/details/9668749 =====>linux快速复制大量小文件方法 nc+tar(打包为一个压缩文件,再传到对端后解压到指定目录还回来了)<=====   1,在需要对大量小文件进行移动或复制时,用cp、mv都会显得很没有效率,可以用tar先压缩再解压缩的方式。   2,在网络环境中传输时,可以再结合nc命令,通过管道和tcp端口进行传输。   nc和tar可以用来快速的在两台机器之间传输文件和目录,比ftp和scp要来得简单的多。   由于nc是一个超轻量的命令,所以一般busybox都会集成它。当一个linux终端,比如linux pda,   通过usblan的方式连接到另一台linux主机的时候,这样的嵌入式终端上一般不会集成ftp server, ssh server   这样比较笨重的服务,这个时候, nc可能成为唯一的上传手段。   比如将机器A上的mytest目录上传到到机器 B(192.168.0.11)上,只需要:   在机器B上,用nc来监听一个端口,随便就好,只要不被占用;并且将收到的数据用tar展开。-l代表监听模式。   [root@server-B ~]#nc -l 4444 |tar -C /tmp/dir -zxf -   然后,在A上通过nc和 tar发送test目录。使用一致的4444的端口。   [root@server-A ~]#tar -zcvf - mytest|nc 192.168.0.11 4444 记得有一次,一台机器内核崩了,后来有位高手用liveCD把机器启动起来,就是用了类似的方法把数据导出来的。 看来基础的知识还是要多掌握一些啊,比如上次提到的links命令,有时候也很有用的 来自:http://logo32.iteye.com/blog/1564741 Generated by Jackxiang's Bo-blog 2.1.1 Release