全网备份
已知 3台服务器主机 台服务器主机 台服务器主机 台服务器主机 名分别 为 web01web01 web01web01、backup backup backup backup 、nfs01 nfs01nfs01,主机 信息见下表 信息见下表 信息见下表
要求:每天晚上00点整在Web服务器上打包备份系统配置文件、网站程序目录及访问日志并通过rsync命令推送备份服务器backup上备份保留(备份思路可以是先在本地按日期打包,然后再推到备份服务器backup上),NFS存储服务器同Web服务器,实际工作中就是全部的服务器
具体要求如下:
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.自己思考下还有什么需要备份呢?
定时任务 打包压缩
2) Web服务器站点目录假定为(/var/html/www)。
4)Web服务器A访问日志路径假定为(/app/logs)
5)Web服务器保留打包后的7天的备份数据即可(本地留存不能多于7天,因为太多硬盘会满)
Find 查找7天以前的 删除
6)备份服务器上,保留每周一的所有数据副本,其它要保留6个月的数据副本。
Find查找时!过去出 周一的文件 !-name “*-1.tar.gz”
7)备份服务器上要按照备份数据服务器的内网IP为目录保存备份,备份的文件按照时间名字保存。
由于用ip地址命名 在客户端创建 /backup/$(hostname -i)/ 目录
8)*需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发给系统管理员邮箱中
思路总结
- 1. 部署客户端 服务端 rsync nfs rpcbind
- 2. 客户端
01.打包压缩文件 到指定目录/backup 下
02.检查打包的是否正确 小心 软连接(坑啊) 加 h ***
04.校检 md5 配置变化信息
03.保留7天以内的 删除 7天以前的
04.然后推送 到 服务端
- 3. 服务段
- 01. 找到半年以前的 但是不包含周1的删除
- 02. 对比 md5 –c 推过来的信息 是否变化
- 03. 邮件
- 04. 测试 脚本 运行 正确 写入定时任务 错误 继续排查
解决方案
web01
[root@web01 backup]# vim /server/scripts/web.sh
#!/bin/bash
Dir="/backup"
IP=`hostname -i`
Date=`date +%F-%w -d "-1day"`
# mkdir dir
mkdir -p $Dir/$IP
#tar sysconfig
tar zchf $Dir/$IP/sys-${Date}.tar.gz /var/spool/cron/root /etc/rc.local /etc/sysconfig/iptables /server/scripts
#tar www
tar zcf $Dir/$IP/www-${Date}.tar.gz /var/html/www
#tar logs
tar zcf $Dir/$IP/logs-${Date}.tar.gz /app/logs
#find mdg
find $Dir/ -type f -name "*.tar.gz" | xargs md5sum >$Dir/$IP/finger.txt
#find rm
find $Dir/ -type f -mtime +7 -name "*.tar.gz" | xargs rm -f
#raync info
rsync -avz $Dir/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
[root@web01 backup]# crontab -l
#crond-id-001:time sync by oldboy
*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1
0 0 * * * /bin/sh /server/scripts/web.sh &>/dev/null
[root@web01 backup]#
~ [root@web01 backup]# sh /server/scripts/web.sh
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
sending incremental file list
172.16.1.8/finger.txt
172.16.1.8/logs-2017-08-31-4.tar.gz
172.16.1.8/sys-2017-08-31-4.tar.gz
172.16.1.8/www-2017-08-31-4.tar.gz
sent 1731 bytes received 115 bytes 1230.67 bytes/sec
total size is 1516 speedup is 0.82
nfs储存服务器
[root@nfs01 backup]# cat /server/scripts/nfs.sh
#!/bin/bash
IP=`hostname -i`
Dir="/backup"
Date=`date +%F-%w -d "-1day"`
# mkdir
mkdir -p $Dir/$IP
#tar sysconfig
tar zchf $Dir/$IP/sys.backup-${Date}.tar.gz /var/spool/cron/root /etc/rc.local /server/scripts /etc/sysconfig/iptables
#tar www
tar zcf $Dir/$IP/html.backup-${Date}.tar.gz /var/html/www
#tar logs
tar zcf $Dir/$IP/logs.backup-${Date}.tar.gz /app/logs
#find md5
find $Dir/ -type f -name "*.tar.gz" |xargs md5sum >$Dir/$IP/finger.txt
#find rm
find $Dir/ -type f -name "*.tar.gz" -mtime +7 |xargs rm -f
#rsync
rsync -avz $Dir/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
[root@nfs01 backup]#
[root@nfs01 backup]# sh /server/scripts/nfs.sh
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
tar: Removing leading `/' from member names
sending incremental file list
./
172.16.1.31/finger.txt
172.16.1.31/html.backup-2017-08-31-4.tar.gz
172.16.1.31/logs.backup-2017-08-31-4.tar.gz
172.16.1.31/sys.backup-2017-08-31-4.tar.gz
sent 1416 bytes received 118 bytes 3068.00 bytes/sec
total size is 1660 speedup is 1.08
[root@nfs01 backup]#
[root@nfs01 backup]# crontab -l
#crond-id-001:time sync by oldboy
*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1
0 0 * * * /bin/sh /server/scripts/nfs.sh &>/dev/null
backup服务器
[root@backup backup]# cat /server/scripts/backup.sh
#!/bin/bash
#Author:oldboy
#Blog:http://oldboy.blog.51cto.com
#Time:2017-08-31 18:11:36
#Name:/server/scripts/backup.sh
#Version:V1.0
#Description:This is a test script.
Dir="/backup"
IP=`hostname -i`
#find rm
find $Dir/ -type f -mtime +180 ! -name "*-1.tar.gz" | xargs rm -f
#find md5
find $Dir/ -type f -name "*.txt" | xargs md5sum -c >$Dir/result.log
mail -s "result" m17560610290@163.com <$Dir/result.log
[root@backup backup]#
邮件设置:
[root@backup ~]# tail -8 /etc/mail.rc
# For Linux and BSD, this should be set.
set bsdcompat
set from=m17560610290@163.com
set smtp=smtp.163.com
set smtp-auth-user=m17560610290@163.com
set smtp-auth-password=520520LJS
set smtp-auth=login
[root@backup ~]#
定时任务:
[root@backup ~]# crontab -l
#crond-id-001:time sync by oldboy
*/5 * * * * /usr/sbin/ntpdate time.nist.gov >/dev/null 2>&1
#rsync
0 0 * * * /bin/sh server/scritps/backup.sh >/dev/null 2>&1