03.@Rsync监控数据实时同步


1、rsync的备份方式

# push
[root@backup ~]# mkdir /backup
[root@backup ~]# ll
total 8
-rwxr-xr-x  1 root root  401 Apr 16 18:22 a.sh
[root@backup ~]# rsync -a a.sh /backup/
[root@backup ~]# ll /backup/
total 4
-rwxr-xr-x 1 root root 401 Apr 16 18:22 a.sh


# pull
[root@backup ~]# cd /mnt/
[root@backup mnt]# ll
total 12
[root@backup mnt]# rsync -a /backup/a.sh ./
[root@backup mnt]# ll
total 16
-rwxr-xr-x 1 root root 401 Apr 16 18:22 a.sh

2、rsync传输方式

1>本地传输

2>远程传输

3>守护进程模式

基本格式如下所示:
Access via rsync daemon:
	Pull: rsync [OPTION...] [USER@]HOST::SRC... [DEST]
		  rsync [OPTION...] rsync://[USER@]HOST[:PORT]/SRC... [DEST]
	Push: rsync [OPTION...] SRC... [USER@]HOST::DEST
 		  rsync [OPTION...] SRC... rsync://[USER@]HOST[:PORT]/DEST

 #语法:
rsync 【OPTION】...  【USER@】HOST:: SRC 【DEST】
#示例
【rootewebel ~】#  rsync -avz rsync_backup@172.16.1.41:: backup  /tmp/

案例

客户端:
1.客户端提前准备存放的备份的⽬录,⽬录规则如下:/backup/nfs_172.16.1.31_2018-09-02
2.客户端在本地打包备份(系统配置⽂件、应⽤配置等)拷⻉⾄/backup/nfs_172.16.1.31_2018-
09-02
3.客户端最后将备份的数据进⾏推送⾄备份服务器
4.客户端每天凌晨1点定时执⾏该脚本
5.客户端服务器本地保留最近7天的数据, 避免浪费磁盘空间



服务端需求:
1.服务端部署rsync,⽤于接收客户端推送过来的备份数据
2.服务端需要每天校验客户端推送过来的数据是否完整
3.服务端需要每天校验的结果通知给管理员
4.服务端仅保留6个⽉的备份数据,其余的全部删除

简约版

  • 客户端
[root@nfs backup]# cat deploy-client.sh 
#!/bin/bash

# /backup/nfs_172.16.1.31_2021-04-19

mkdir -pv /backup/$(hostname)_`hostname -I | awk '{print $2}'`_`date +%F`

# /etc/hosts   /etc/resolv.conf

cd /backup/$(hostname)_`hostname -I | awk '{print $2}'`_`date +%F`

tar -cvzf system_file.tar.gz   /etc/hosts  /etc/resolv.conf

# 记录MD5哈希值
md5sum system_file.tar.gz > md5sum.log

rsync -avz /backup/$(hostname)_`hostname -I | awk '{print $2}'`_`date +%F`   egon@backup::yangge

# 00 01 * * *  deploy.sh
find /backup -mtime +7 -exec rm -rf {} \;
  • 服务器端
[root@backup backup]# cat deploy-server.sh 
#!/bin/bash

cd /backup/nfs_172.16.1.31_`date +%F`

md5sum -c md5sum.log  

# 发送邮件
mail -s '测试文件' alvincy@qq.com<md5sum.log

find /backup -mtime +180 -exec rm -rf {} \;

文艺青年版

  • 客户端
#!/bin/bash

ROOT_DIRECTORY=/backup
HOSTNAME=$(hostname)
LOCALOST=`hostname -I | awk '{print $2}'`
DATE=`date +%F`

DIR=$ROOT_DIRECTORY/${HOSTNAME}_${LOCALOST}_${DATE}

mkdir -pv $DIR

cd $DIR

tar -cvzf system_file.tar.gz  /var/log/messages

# 记录MD5哈希值
md5sum system_file.tar.gz > md5sum.log

rsync -avz $DIR   egon@backup::yangge

# 00 01 * * *  deploy.sh
find /backup -mtime +7 -exec rm -rf {} \;
  • 服务器端
#!/bin/bash

ROOT_DIRECTORY=/backup
CLIENT_HOSTNAME=nfs
CLIENT_HOST=`ping -c1 ${CLIENT_HOSTNAME} | awk 'NR==1{print $2}'`
DATE=`date +%F`

cd ${ROOT_DIRECTORY}/${CLIENT_HOSTNAME}_${CLIENT_HOST}_${DATE}

md5sum -c md5sum.log 

# 发送邮件
mail -s '测试文件' alvincy@qq.com<md5sum.log

find /backup -mtime +180 -exec rm -rf {} \;

文艺青年升级版

  • 客户端
#!/bin/bash

ROOT_DIRECTORY=/backup
HOSTNAME=$(hostname)
LOCALOST=`hostname -I | awk '{print $2}'`
DATE=`date +%F`

DIR=$ROOT_DIRECTORY/${HOSTNAME}_${LOCALOST}_${DATE}

[ -f $DIR ] || mkdir -pv $DIR 

cd $DIR 

[ -d system_file.tar.gz ] || tar -cvzf system_file.tar.gz  /var/log/messages 

# 记录MD5哈希值
[ -d md5sum.log ] || md5sum system_file.tar.gz > md5sum.log

rsync -avz $DIR   egon@backup::yangge

# 00 01 * * *  deploy.sh
find /backup -mtime +7 -exec rm -rf {} \;

实时监控同步数据的脚本

监控数据源是否有变化。

1、安装

[root@nfs yum.repos.d]# cat epel.repo 
[epel]
name='epel repo'
baseurl=https://repo.huaweicloud.com/epel/7/x86_64/
gpgcheck=0

[root@nfs yum.repos.d]#  yum install -y inotify-tools

2、测试监控

inotifywait -mrq --format '%Xe %w %f' -e create,modify,delete,attrib,close_write /var/log/messages

简约版

inotifywait -mrq --format '%Xe %w %f' -e create,modify,delete,attrib,close_write /var/log/messages | while read line; do /backup/deploy-client-bak.sh ; done

文艺青年版

[root@nfs ~]# nohup ./inotify.sh &
[root@nfs ~]# cat inotify.sh 
#!/bin/bash
export RSYNC_PASSWORD=1

inotifywait -mrq --format '%Xe %w %f' -e create,modify,delete,attrib,close_write /var/log/messages | while read line; do /backup/deploy-client-bak.sh ; done


posted @ 2021-04-19 19:18  ଲ一笑奈&何  阅读(38)  评论(0编辑  收藏  举报