要求:定期备份服务器中重要的文件,并且在凌晨00:00执行。备份后发送邮件通知管理员备份状态。
具体要求如下:
1)所有服务器的备份目录必须都为/backup
2)要备份的系统配置文件包括但不限于:
a.定时任务服务的配置文件(/var/spool/cron/root)(适合web和nfs服务器)
b.开机自启动的配置文件(/etc/rc.local)(适合web和nfs服务器)
c.日常脚本的目录(/server/scripts)
d.防火墙iptables的配置文件(/etc/sysconfig/iptables)
e..............自己思考
3)Web服务器站点目录假定为(/var/html/www)
4)Web服务器A访问日志路径假定为(/app/logs)
5)Web服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)
6)备份服务器上,保留每周一的所有数据副本,其它要保留6个月的数据副本。
7)备份服务器上要按照备份数据服务器的内网IP为目录保存备份,备份的文件按照时间名字保存
8)需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发
9)要求:每天晚上00点整在Web服务器上打包备份系统配置文件、网站程序目录及访问日志并通过rsync命令推送
实施的整体过程
一服务端
1.检查软件是否安装
rpm -qa rsync 如果没有安装就yum -y install rsync
2.服务端配置文件的添加 (vim /etc/rsyncd.conf)
uid = rsync
gid = rsync
use chroot = no
max connections = 200
timeout = 300
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsync.lock
log file = /var/log/rsyncd.log
ignore errors
read only = no
list = no
hosts allow =172.16.1.0/24
auth users = rsync_backup
secrets file =/etc/rsync.password
[backup]
path = /backup
3.创建备份目录的管理权限用户
useadd -s /sbin/nologin -M rsync
4.创建备份数据目录
mkdir -p /backup
chown -R rsync.rsync /backup
5.创建密码认证用户文件
echo "rsync_backup:123456" >>/etc/rsync.password
chmod 600 /etc/rsync.password
6. 启动rsync-------####xinetd
rsync --daemon 启动
ps -ef |grep rsync 查看进程
echo "rsync --daemon" >>/etc/rc.local 添加开机启动
二,客户端
1.检查rsync 是否安装
rpm -qa rsync 如果没有安装就yum -y install rsync
2.创建认证文件
echo "123456" >/etc/rsync.passwd 这里的认证必须要和服务器的密码一致
chmod 600 /etc/rsync.passwd
3.测试推送
rsync -avzP /etc/services rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
三 客户端NFS服务器的脚本编辑(rsync客户端)
创建备份的目录
mkdir -p /backup
2. NFS和Web服务器上文件进行打包备份,/backup 目录
1) NFS 服务器打包的命令
tar zcvhf /backup/systemfile_info.tar.gz /var/spool/cron/root /etc/rc.local /server/scripts /etc/sysconfig/iptables
注:tar打包时使用h参数表示当要打包的数据文件是软链接时不会打包软链接,而是打包真实路径文件
2)推送推送命令到rsync服务器
rsync -avz /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
3)删除7天之前的数据
find /backup -type f -name "*.tar.gz" -mtime +7 -exec rm {} \; 方法一
find /backup -type f -name "*.tar.gz" -mtime +7 |xargs rm -f 方法二
find /backup -type f -name "*.tar.gz" -mtime +7 -delete 方法三
4)对客户端备份的数据进行指纹验证(指纹文件同备份文件一并rsync到服务器)
cd /backup && md5sum systemfile_info.tar.gz > systemfile_info_md5.txt
5)脚本的编写
#! /bin/bash
# name: nfs_backup.sh
# time: 2017.8.21
# desc: backup rsync client data info
# author guoxiangfu
IP=$(hostname -i) #取IP
mkdir -p /backup/$IP &&\ ###创建客户端备份目录
#把系统数据打包到/打包到/backup下并且
cd / && tar zcfh /backup/$IP/ifconfig_backup_$(date +%F_week0%w).tar.gz var/spool/cron etc/rc.local server/scripts etc/sysconfig/iptables &&\
#把打包的数据生成指纹信息
find /backup/$IP/ -type f -name "*$(date +%F_week0%w).tar.gz" |xargs md5sum >/backup/$IP/check_info_$(date +%F_week0%w).txt
#推送系统数据包以及指纹文件到rsync服务器41的/backup目录中
rsync -az /backup/$IP rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
#删除7天之前的数据
find /backup/$IP/ -type f -mtime +7 |xargs rm –f
#脚本的检查命令 sh -x /server/scripts/nfs.backup.sh
四客户端WEB服务器的脚本编辑(rsync客户端)
#! /bin/bash
# name: nfs_backup.sh
# time: 2017.8.21
# desc: backup rsync client data info
# author guoxiangfu
IP=$(hostname -i) #取IP
mkdir -p /backup/$IP &&\ ###创建客户端备份目录
#把系统数据打包到/打包到/backup下并且
cd / && tar zcfh /backup/$IP/ifconfig_backup_$(date +%F_week0%w).tar.gz var/spool/cron etc/rc.local server/scripts etc/sysconfig/iptables &&\
#把打包的数据生成指纹信息
find /backup/$IP/ -type f -name "*$(date +%F_week0%w).tar.gz" |xargs md5sum >/backup/$IP/check_info_$(date +%F_week0%w).txt
#推送系统数据包以及指纹文件到rsync服务器41的/backup目录中
rsync -az /backup/$IP rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
##删除7天之前的数据
find /backup/$IP/ -type f -mtime +7 |xargs rm –f
#脚本的检查命令 sh -x /server/scripts/Web_backup.backup.sh
五计划任务的编写
1 NFS服务器的(rsync客户端编写)
crontab -e
#备份数据信息
00 00 * * * /bin/sh /server/scripts/nfs.backup.sh &>/dev/null
2 Web服务器(客户端)
#备份数据信息
00 00 * * * /bin/sh /server/scripts/Web_backup.sh &>/dev/null
六backup服务器的脚本(rsync服务端)
验证数据完整性
find /backup/ -type f -name "check_info_$(date +%F_week0%w).txt" |xargs md5sum -c >/backup/check_info_$(date +%F_week0%w).txt
2. 邮件配置
vim /etc/mail.rc 增加如下:
set from=guoxiangfu@guoxiangfu.com #邮箱地址 smtp=smtp.guoxiangfu.com
set smtp-auth-user=guoxiangfu #邮箱账号 smtp-auth-password=123456 #授权码 smtp-auth=login
3. 将验证结果通过邮件发送给管理员
mail -s "check_rsync_data mail" 978299310@qq.com </backup/check_info_$(date +%F_week0%w).txt 邮件发送邮件方式1
echo "rsync_server" |mail -s "check_rsync_data mail" 978299310@qq.com 邮件发送邮件方式2
3. 脚本编写
vim /server/scripts/server_backup.sh
检查备份数据的是否完整
find /backup -type f -name "*$(date +%F_week0%w).txt" |xargs md5sum -c >/tmp/mails.txt
#把数据完整性的检查状态通过邮件的形式发送
mail -s "check data" 978299310@qq.com </tmp/mails.txt
#删除180天前的数据进行删除,但保留每周一数据
find /backup -type f -mtime +180 ! -name "*week01.tar.gz" |xargs rm –f
发表评论