LINUX使用netcat备份数据的简单实现

系统环境为centos6和centos7

1、使用netcat工具备份有速度比较快的优点,在备份源和目的机器均安装netcata

yum install nc -y

 

2、在备份目的机器打开端口和文件等待

root@v61 tmp]# nc -l 9999 > bak1.tgz

文件传输完成后备份源的端口会自动关闭

 

3、在备份源的机器上面备份文件重定向到备份目的机器

[root@v73 tmp]# tar -zcvf - zabbix_agentd.log | nc 192.168.99.61 9999

 

4、解压验证数据

[root@v61 tmp]# tar -zxvf bak1.tgz          
zabbix_agentd.log
[root@v61 tmp]# head -n 3 zabbix_agentd.log
  1868:20191023:175159.085 Starting Zabbix Agent [Zabbix server]. Zabbix 3.4.3 (revision 73588).
  1868:20191023:175159.085 **** Enabled features ****
  1868:20191023:175159.085 IPv6 support:           NO

 

5、扩展备份的作业,从一个中心节点备份所有的数据

备份脚本如下:

[root@v61 bakdir]# cat t3.sh
#!/bin/bash
bakserverip="192.168.99.61"                            #备份的服务器
bakdir=/bakdir                                                   #备份的目录,全部备份放到此处

function chkport()                                              #检查端口是否被占用的函数
{
lsof -i:$1
}

function returnport()                                         #返回可用的随机端口,netcat将打开这个端口传输备份数据
{
ports=`echo $RANDOM`                              #生成0-32767的随机端口号,如果已经在使用,则再生成一个,直到生成未使用的端口号
chkport $ports
flag=$?
while [ $flag -ne 1 ]
do
ports=`echo $RANDOM`
chkport $ports
flag=$?
done
echo $ports
}

 

#将需要备份的IP,用户名,密码,备份路径写在一个文件当中,空格分隔这些字段,一行一个备份源,如果已经做了ssh认证,可以不用密码更加安全一些
cat /bakdir/bakinfo.txt | while read lines              
do
ips=`echo $lines|cut -d" " -f1`
uname=`echo $lines|cut -d" " -f2`
pwd=`echo $lines|cut -d" " -f3`
baksourcepath=`echo $lines|cut -d" " -f4`
bakfilename=$ips`echo $baksourcepath | sed 's#\/#.#g'`.`date +"%Y-%m-%d-%H-%M-%S"`.tgz    #根据IP路径时间拼接出备份的文件名

cd $bakdir
bakports=`returnport`
nc -l $bakports > $bakfilename &      #放后台执行,不会占用终端,导致脚本执行不下去
sleep 3                                               #等端口先打开,再连接
sshpass -p $pwd ssh -o StrictHostKeyChecking=no -n $uname@$ips "tar -Pzcvf - "$baksourcepath"|nc "$bakserverip" "$bakports   


done

记录IP,用户名,密码,备份路径的文本的内容如下:

 

6、执行效果

[root@v61 bakdir]# sh t3.sh

 

可以放在crontab当中计划执行

已标记关键词 清除标记
相关推荐
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页