rsync脚本案例;rsync+inotify及实时备份脚本的案例
一 rsync备份案例
需求:
客户端:
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个⽉的备份数据,其余的全部删除
1、准备服务器
主机名 : nfs --客户端 -- 外网ip:192.168.15.31 -- 内网ip:172.16.1.31
主机名 : backup --服务端 -- 外网ip:192.168.15.41 -- 内网ip:172.16.1.41
简约版脚本
- 客户端
[root@nfs ~]# 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`
# 打包文件并放到指定目录下
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` dandan@192.168.15.41::bingbing
# 00 01 * * * deploy.sh 定时器
find /backup -mtime +7 -exec rm -rf {} \;
- 服务器端
[root@backup ~]# cat deploy-server.sh
#!/bin/bash
cd /backup/nfs_172.16.1.31_`date +%F`
md5sum -c md5sum.log
# 发送邮件
mail -s '测试文件' 757294876@qq.com<md5sum.log
find /backup -mtime +180 -exec rm -rf {} \;
配置邮件
1.配置邮件
[root@backup~]# yum install mailx -y
[root@backup~]# vim /etc/mail.rc #进入到配置文件在末行输入
set from=757294876@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=757294876@qq.com
set smtp-auth-password=xxxxxx #写授权码秘钥
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb/
2.验证能否成功发送邮件
[root@backup~]# touch 1.txt
[root@backup~]# mail -s "hello pal" 7572948768@qq.com < 1.txt
定义变量版
- 客户端
#!/bin/bash
ROOT_DIRECTORY=/backup
HOSTNAME=$(hostname)
LOCALOST=`hostname -I | awk '{print $2}'`
DATE=`date +%F`
DIR=$ROOT_DIRECTORY/${HOSTNAME}_${LOCALOST}_${DATE}
mkdir -p $DIR
cd $DIR
tar -cvzf system_file.tar.gz /var/log/messages
# 记录MD5哈希值
md5sum system_file.tar.gz > md5sum.log
rsync -avz $DIR dandan@192.168.15.41::bingbing
# 00 01 * * * deploy.sh
find /backup -mtime +7 -exec rm -rf {} \;
- 服务器端
#!/bin/bash
ROOT_DIRECTORY=/dandan_bak
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 '测试文件' 7572948768@qq.com<md5sum.log
find /dandan_bak -mtime +180 -exec rm -rf {} \;
二 Rsync结合inotify
监控数据源是否有变化。
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
3、常用参数
-m 持续监控
-r 递归
-q 静默,仅打印时间信息
--timefmt 指定输出时间格式
--format 指定事件输出格式
%Xe 事件
%w 目录
%f 文件
-e 指定监控的事件
access 访问
modify 内容修改
attrib 属性修改
close_write 修改真实文件内容
open 打开
create 创建
delete 删除
umount 卸载
实时备份脚本编写
简约版
[root@backup ~]# vim rsyn-inotify.sh
#!/bin/bash
dir=/backup
user/bin/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

浙公网安备 33010602011771号