工具|网络工具中的瑞士军刀–nc
2013 年 12 月 17 日
一 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是一款高效的数据传输工具利器。感兴趣的小伙伴可以尝试研究。
推荐文章
-The End-
本公众号长期关注于数据库技术以及性能优化,故障案例分析,数据库运维技术知识分享,个人成长和自我管理等主题,欢迎扫码关注。