案例
客户端需求
1.客户端提前准备存放的备份的目录,目录规则如下:/backup/nfs_172.16.1.31_2018-09-02
2.客户端在本地打包备份(系统配置文件、应用配置等)拷贝至/backup/nfs_172.16.1.31_2018-09-02
3.客户端最后将备份的数据进行推送至备份服务器
4.客户端服务器本地保留最近7天的数据, 避免浪费磁盘空间
5.客户端每天凌晨1点定时执行该脚本
[root@manager ansible_roles_prod]# cat base/files/client_push_data_server.sh
#!/bin/bash
#进行全网备份 checheng
#为目录、时间、ip、主机名设定变量
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
Path=/backup_data
Host=$(hostname)
IP=$(ifconfig eth1 |awk '/netmask/ {print $2}')
Time=$(data +%F)
Name=${Host}_${IP}_${Time}
#1.创建存放备份文件的目录
mkdir -p $Path/$Name
#2.打包想要备份的文件到创建的目录中
cd / &&\
tar czf $Path/$Name/one.tar.gz etc/hosts
#3.贴上封条
md5sum $Path/$Name/*.tar.gz > $Path/$Name/check_flag_$Time
#4.将数据推送到备份服务器
rsync -avz $Path/ rsync_backup@172.16.1.41::backup
#4.保留最近七天的数据
find $Path -type d -mtime +7 |xargs rm -rf
服务端需求
1.服务端部署rsync,用于接收客户端推送过来的备份数据
2.服务端需要每天校验客户端推送过来的数据是否完整
3.服务端需要每天校验的结果通知给管理员
4.服务端仅保留6个月的备份数据,其余的全部删除
实现流程图
需注意的几点
NO.1:为了让内容不被写死,需要设定变量
1.变量就是固定的字符串,变量的值可能是不固定的
2.变量名首字母大写,为了和命令进行区分
3. $() 里面放的是命令, ${} 里面放的是变量
NO.2:定时任务要先进行测试,并且要写绝对路径
#同步时间
ntpdate time.windows.com
NO.3:脚本文件要给予执行权限,+x
NO.4:检验客户端推送过来的数据是否完整
1.客户端
将数据进行打包,再贴上封条,最后推送给服务端
#生成校验码=贴上封条
md5sum 压缩包名称 > 存放到的目录
2.服务端
根据客户端推送的封条,检验数据是否一致,讲结果存储到某个文件中,最后通知给管理员
#检验
md5sum -c
NO.5:怎样将检验结果通过邮箱发送给管理员呢?
#收件人
mail -s "邮件名称" 邮箱地址 <发送的内容
#发件人,对配置文件进行编辑,需要用到授权码
vim /etv/mail.rc













网友评论