工具|网络工具中的瑞士军刀–nc

一 netcat是什么?

netcat(命令行中使用 nc )是网络工具中的瑞士军刀,它能通过TCP和UDP在网络中传输数据。通过与其他工具结合和重定向,我们可以在脚本中以多种方式使用它,比如传输文件,目录,用于网络安全中扫描端口,命令行聊天(现在估计没有多少人无聊做这个)。

二 常用参数

nc的参数有很多,常用的有如下几个。

三 如何使用

3.1 端口扫描

可以指定具体的端口或者端口范围

3.2 拷贝数据文件或者目录

传输具体的文件夹和文件在命令上没有什么差异。需要注意的是对于包含大量小文件的文件夹,推荐和tar命令一起使用,对文件压缩,打包之后再传输。测试机器

接收端 在server1上执行如下命令 ,监听端口12345并将接收到的数据解压缩到 my3307 目录

nc -l 12345 | tar xizvf - -C /data/my3307/

*源机器 * 上执行命令将目录下的所有文件打包并压缩传递到

tar -czf - * | nc server2 12345

3.3 如何 和 MySQL 一起玩耍

作为DBA 我们最常用的是它的网络传输功能,在不同的机器之间拷贝数据库文件,日志或者备份。 使用nc 传输数据基本可以将网络带宽用满。如果是新的机器则可以不用限制带宽,但是如果是生产机器有数据库在运行,推荐使用 pv 命令做限速

需求:日常运维中有极个别非标的数据库实例不能使用自动化的方式重建slave,想要快速的搭建一套主从,则可以使用nc。

在主库直接使用innobackupex以流式做备份 通过nc将备份文件传递到目标端。

1.在目标机器监听12345端口

sudo nc -l 12345 | tar xivf - -C 3306/

2.在主库做备份并且通过nc传递到目标端

/opt/percona-xtrabackup-24/bin/innobackupex --defaults-file=/srv/my3306/my.cnf --user=root --password='' --backup --slave-info --stream=tar ./ | nc data-mysql1 12345

3.在目标机器恢复实例。

/opt/percona-xtrabackup-24/bin/innobackupex --apply-log /data/my3307/data/

4.搭建主从(略)

四 小结

nc是一款高效的数据传输工具利器。感兴趣的小伙伴可以尝试研究。

推荐文章

工具|学习RPM打包

Linux IO 问题分析利器–iostat

系统调用跟踪分析神器–strace

-The End-

本公众号长期关注于数据库技术以及性能优化,故障案例分析,数据库运维技术知识分享,个人成长和自我管理等主题,欢迎扫码关注。