CentOS7-实现全网备份脚本
Posted sre-chan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CentOS7-实现全网备份脚本相关的知识,希望对你有一定的参考价值。
一、应用场景
备份公司的重要的文件或者日志文件,系统配置文件等
二、脚本思路
1、本地打包备份
2、同步服务推送至备份服务器
3、同步成功发送邮件提醒管理员
4、编写计划任务
5、本地备份文件保留时间,服务器备份文件保留时间
三、项目实施
1、服端配置rsync服务
步骤一:安装rsync服务
[root@node01 ~]# yum install rsync.x86_64 -y
步骤二:修改配置文件
uid= rsync
gid= rsync
usechroot = no
maxconnections = 200
timeout= 300
pidfile = /var/run/rsyncd.pid
lockfile = /var/run/rsync.lock
logfile = /var/log/rsyncd.log
[data]
comment= It\'s my test data!
path= /data/
ignoreerrors
readonly = false
list= false
hostsallow = 192.168.11.0/24
hostsdeny = 0.0.0.0/32
authusers = rsync_backup
secretsfile = /etc/rsyncd.passwd
步骤三:准备用户授权
[root@node01 ~]# mkdir /data
[root@node01 ~]# useradd rsync -s /sbin/nologin -M
[root@node01 ~]# chown -R rsync.rsync /data/
步骤四:配置用于同步的密码文件
[root@node01 ~]# echo "rsync_backup:123456" >> /etc/rsyncd.passwd
[root@node01 ~]# cat /etc/rsyncd.passwd
rsync_backup:123456
[root@node01 ~]# chmod 600 /etc/rsyncd.passwd
[root@node01 ~]# ll /etc/rsyncd.passwd
-rw------- 1 root root 20 Apr 8 18:30 /etc/rsyncd.passwd
步骤五:启动服务并设置为开机自启动
[root@node01 ~]# systemctl enable --now rsyncd
2、客户端配置rsync服务
步骤一:安装rsync服务
[root@node01 ~]# yum install rsync -y
步骤二:写入密码文件
[root@node02 ~]# echo "123456" >> /etc/rsyncd.passwd
[root@node02 ~]# cat /etc/rsyncd.passwd
123456
[root@node02 ~]# chmod 600 /etc/rsyncd.passwd
3、编写脚本
示例代码:
[root@node01 ~]# cat web_bak.sh
#!/bin/bash
#define var
# 取IP地址,这里用的VMware做的,网卡会和服务器网卡不一样
IP=`ifconfig ens32 | awk -F \'[ :]+\' \'NR==2 print $3\'`
# 接收当前系统时间
Today=$(date +%F)
# 定义备份路径
Path=/backup/$IP
# 配置文件 定时任务服务 开机自启动 防火墙iptables
COFING_data="var/spool/cron/root etc/rc.local etc/sysconfig/iptablesServer/Scripts/"
# web服务器数据
WEB_data=var/www/html
# 日志
WEB_log=var/log/httpd
# 备份后的名称
BAK_CONFIG_NAME=config.$Today.tar.gz
BAK_WEB_DATA_NAME=web_data.$Today.tar.gz
BAK_WEB_LOG_NAME=web_log.$Today.tar.gz
# 备份服务器地址
BAK_Server=192.168.11.111
Flag_file=flag.$Today.txt
#backup
[ -d $Path ] || mkdir -p $Path
cd / && \\
tar czf $Path/$BAK_CONFIG_NAME $COFING_data && \\
tar czf $Path/$BAK_WEB_DATA_NAME $WEB_data && \\
tar czf /$Path/$BAK_WEB_LOG_NAME $WEB_log
#check backup && make Flag_file
if [ $? == 0 ]
then
find $Path -type f -name "*$Today.tar.gz" | xargs md5sum >> $Path/$Flag_file
else
echo "backup Failure" >> $Path/$Flag_file
exit 1
fi
#to backup server
rsync -az /backup/ rsync_backup@$BAK_Server::backup --passwordfile=/etc/rsyncd.passwd
#del local backup file,Keep a week data
find $Path -type f -name "*.tar.gz" -mtime +7 | xargs rm -f
4、服务器端检查邮件告警脚本在服务端完成
[root@node01 ~]# cat check_web.sh
#!/bin/bash
#define var
Today=$(date +%F)
Flag_file=/backup/192.168.11.111/flag.$Today.txt
Mail_file=/opt/mail_bak_$Today.txt
#check flag
if [ ! -f $Flag_file ]
then
echo "backup is error,pls view back server" > $Mail_file
else
find /backup -type f -name "flag.$(date +%F)*" | xargs md5sum -c | grep FAILED > $Mail_file
fi
#check Mail_file
if [ -s $Mail_file ]
then
mail -s "$(date +%F-%T) back" admin_chan@163.com <$Mail_file
else
echo "backup is success!"
fi
#del remote bak file,30 days keep data
find /backup -type f -name "*.tar.gz" -mtime +30 | xargs rm -f
-------------------------------------------
个性签名:今天做了别人不想做的事,明天你就做得到别人做不到的事,尝试你都不敢,你拿什么赢!
如果觉得这篇文章对你有小小的帮助的话,记得在右下角点个“推荐”哦,博主在此感谢!
一键部署rysnc实现全网备份
需要的工具:ansible 批量管理工具
思路:
实现一键自动化安装好rysnc备份服务器,实现全网备份
rysnc配置文件,是在管理机上,推送到我们的rysnc服务器上的,所以我们可以随时可以在管理机修改我们的rysnc服务器上的配置文件
rysnc配置文件写两个模块 backup nfsbakcup 就是两个备份共享的目录
backup 共享目录是存放全网备份的数据
nfsbackup共享目录是备份我们nfs服器上的数据实现实时同步
客户端需要向rsync备份服务器推送数据,一天一次,写了两个脚本,一个是备份全网所有机器的系统配置文件,一个是备份web服务器上的程序文件脚本,
客户端备份程序脚本放在管理机上,管理机通过复制到客户机上,添加定时任务,每天晚上00点执行一次。
管理机上的目录规划:
剧本目录:/etc/ansible/playbook/
一键部署备份服务器剧本文件名: rsyncserver.yml
rsyncserver.yml 此剧本主要作用:实现rsync备份服务器搭建
脚本目录:server/script/
脚本文件名:sysconf-backup.sh打包备份系统主要文件,将备份的文件推送到备份服务器上
配置文件目录:/server/configfile/
rsync服务的主配置文件:rsyncd.conf
mail.rc 邮件的配置文件,实现检查备份数据完整性本次以QQ邮箱为主
ansible实现一键搭建rsync
[[email protected] playbook]# vim rsyncserver.yml
- hosts: rsyncserver
tasks:
- name: 1:安装 rysnc
yum: "name=rsyncstate=installed"
- name: 2:rsync配置文件
copy:"src=‘/server/configfile/rsyncd.conf‘ dest=‘/etc‘"
- name: 3:创建rsync服务的虚拟用户
user: "name=‘rsync‘shell=/sbin/nologin createhome=no"
- name: 4:创建共享目录backup并且修改属组属主权限
file: "path=/backupstate=directory owner=rsync group=rsync"
- name: 5:创建共享目录nfsbackup并且修改属组属主权限
file:"path=/nfsbackup state=directory owner=rsync group=rsync"
- name: 6:创建虚拟认证用户密码文件并且修改权限
shell: "echorsync_backup:123456 >/etc/rsync.password && chmod 600/etc/rsync.password "
- name: 7:启动rsync
shell: "rsync--daemon"
- name: 8:加入到开机自启动中
shell: "[ `egrep‘rsync --daemon‘ /etc/rc.local |wc -l` -eq 1 ] || echo -e ‘#rsync start\\nrsync--daemon‘ >> /etc/rc.local "
- name: 9:rsync 服务端配置完成
shell: "echo rsync配置完成"
- name: 邮箱配置文件,检查全网备份数据完整性发送到邮箱
copy:"src=/server/configfile/mail.rc dest=/etc"
1.1客户端备份系统配置文件到backup目录中,然后推送到备份服务器上剧本
次脚本主要是推送我们m01备份系统配置文件脚本到客户端服务器上,然后添加定时任务,实现每天晚上00点推送我们备份的系统配置文件到备份服务器
m01服务端的配置剧本
[[email protected] playbook]# vim rsync-client-sysconf-backup.yml
- hosts: client-sysconf-backup
tasks:
- name: 1:rsync客户端密码文件并且修改密码文件权限
shell: "echo‘123456‘> /etc/rsync.password && chmod 600 /etc/rsync.password"
- name: 2:创建备份目录backup和脚本目录
shell: "mkdir -p/backup && mkdir -p /server/script"
- name: 3:推送系统配置文件打包脚本
copy:"src=/server/script/sysconf-backup.sh dest=/server/script/"
- name: 4:每天晚上0点晚上打包备份文件,并且推送到备份服务器
cron: "name=‘Everyday 00 backup sysconfig to rsync by Kaile‘ minute=00 hour=
00 job=‘/bin/sh /server/script/sysconf-backup.sh‘"
1.1.1客户端备份系统配置文件数据推送到备份服务器脚本
此脚本是系统配置文件备份脚本,可以实现所有机器,备份系统配置文件。
主要作用备份系统常用配置文件
利用md5加密备份的配置文件
将我们每天备份的系统配置文件和加密的md5文件每天00点发送到备份服务器上
删除本地7天以前的数据
[[email protected] script]# vim sysconf-backup.sh
#!/bin/bash
IP=`hostname -I |cut -d" " -f2`
IPDIR="/backup/${IP}"
#创建打包备份目录
mkdir -p $IPDIR
#backup sysconfig
cd / && tar -czPhf $IPDIR/sysconfig_$(date+%F-week0%w).tar.gz ./var/spool/cron/root
./etc/rc.local./server/scripts ./etc/sysconfig/iptables >/dev/null 2>&1
#check backup sysconfig
find $IPDIR/ -type f -name "*$(date +%F-week0%w).tar.gz" |xargs md5sum > ${IPDIR}/md
5sum_$(date +%F-week0%w).txt
#Push推送 sysconfig to rsync backup server
rsync -az /backup/$IP [email protected]::backup --password-file=/etc/rsync.pa
ssword
#delete +7 day backup data
rm -rf $(find $IPDIR -type f -mtime +7)
1.2客户端备份website服务剧本
m01剧本备份web程序
[[email protected] playbook]# vim rsync-client-website-backup.yml
- hosts: client-website-backup
tasks:
- name: 1:rsync客户端密码文件并且修改密码文件权限
shell: "echo‘123456‘> /etc/rsync.password && chmod 600 /etc/rsync.password"
- name: 2:创建备份目录backup和脚本目录
shell: "mkdir -p/backup && mkdir -p /server/script"
- name: 3:推送website程序文件打包脚本
copy:"src=/server/script/website-backup.sh dest=/server/script/"
- name: 4:每天晚上0点晚上打包备份文件,并且推送到备份服务器
cron: "name=‘Everyday 00 backup website to rsync by Kaile‘ minute=00 hour=00 job=‘/bin/sh/server/script/website-backup.sh‘"
1.2.1客户端备份website程序文件数据推送到备份服务器脚本
客户端备份目录是:web172.16.1.8推送到备份服务器也是这个目录
[[email protected] script]$vim website-backup.sh
#!/bin/bash
IP=`hostname -I |cut -d " " -f2`
IPDIR="/backup/web${IP}"
#创建打包备份website目录
mkdir -p $IPDIR
#backup website data
cd /&& tar -czPhf $IPDIR/nginx_$(date +%F-week0%w).tar.gz/application/nginx/html/
#backup website log
cd /&& tar -czPhf $IPDIR/web_log_$(date +%F-week0%w).tar.gz/application/nginx/logs/
#check backup website
find $IPDIR/ -type f -name "*$(date+%F-week0%w).tar.gz" | xargs md5sum > ${IPDIR}/md5sum_$(date+%F-week0%w).txt
#Push推送 website to rsync backupserver
rsync -az $IPDIR [email protected]::backup --password-file=/etc/rsync.password
#delete +7 day backup data
rm -rf $(find $IPDIR -type f -mtime +7)
1.3备份服务器检查每天备份的数据完整性
系统的配置文件,和web服务器程序文件,并且每天发送邮件通知
[[email protected] script]# vim check-sysconfig-backup.sh
#!/bin/bash
#check sysconfig website data
find /backup/ -type f -name"*$(date +%F-week0%w).txt"| xargs md5sum -c >/tmp/md5-$(date+%F-week0%w).txt
#邮件通知
mail -s "backup date " [email protected] </tmp/md5-$(date +%F-week0%w).txt>/dev/null 2>&1
#delete +180 day 01
rm -rf $(find /backup/ -type f -mtime +180 ! -name "*$(date+%F-week01).tar.gz")
1.4QQ邮箱配置文件
#mail config
set bsdcompat
set smtp=smtp.qq.com
set smtp-auth-password=odigxgzaschvbijd
set smtp-auth=login
set smtp-use-starttls
set ssl-verify=ignore
set nss-config-dir=/etc/pki/nssdb
本文出自 “啊凯” 博客,请务必保留此出处http://kaile.blog.51cto.com/12459560/1930526
以上是关于CentOS7-实现全网备份脚本的主要内容,如果未能解决你的问题,请参考以下文章