基本备份要求



要求:每天晚上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)(适合web和nfs服务器)。

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)*需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发给系统管理员邮箱中


规范项目文档、画逻辑图,提交审核


思路:

1.搭建backup服务器

 a)rsync服务


2.搭建web01服务器

 a.验证rsync服务能否推送成功

 b.开发校本实现打包、备份、推送、校验、删除

 c.配置定时任务每天0点准时推送


3.backup服务器:

 a.校本实现校验、删除、报警

 b.配置定时任务每天6点定时执行


4.同理搭建其他服务器


实施手册:

企业级整站集群数据备份项目方案详解_服务器

一、rsync服务端配置即backup服务器的配置:


1.配置rsync服务端


vim /etc/rsyncd.conf


#Rsync server

##rsyncd.conf

uid = rsync # 客户端具有rsync用户的权限

gid = rsync

use chroot = no #与安全相关

max connections = 20 #客户端最大连接数

timeout = 600 #超时时间

pid file = /var/run/rsyncd.pid #进程号文件

lock file = /var/run/rsync.lock #锁文件

log file = /var/log/rsyncd.log #log文件

ignore errors #忽略错误

read only = false #可读写

list = false #不可远程列表

hosts allow = 192.168.3/24 #允许的ip网段

hosts deny = 0.0.0.0/32

auth users = rsync_backup #远程连接的用户

secrets file = /etc/rsync.password #存放用户和密码的文件



[backup] #模块

comment = backup server by chinasoft 2017-04-10 #注释

path = /backup #共享的目录



注意:在配置/etc/rsyncd.conf时最好不要加注释,可能会出错

*************************************************

uid = rsync

gid = rsync

use chroot = no

max connections = 20

timeout = 600

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log



[backup]

path = /backup

ignore errors

read only = false

list = false

hosts allow = 192.168.3.0/24

hosts deny = 0.0.0.0/32

auth users = rsync_backup

secrets file = /etc/rsync.password


*************************************************


添加rsync用户

useradd -s /sbin/nologin -M rsync

创建目录

mkdir /backup

chown -R rsync.rsync /backup

写入密码

echo 'rsync_backup:rsyncpass' >/etc/rsync.password

#配置密码文件/etc/.rsyncd.passwd,文件格式是明文的,所以文件权限设为600

chmod 600 /etc/rsync.password



#配置服务能够启动,监听在873/tcp端口上

# rsync --daemon

# ss -tunlp|grep rsync

tcp    LISTEN     0      5                     :::873                  :::*      users:(("rsync",64141,5))

tcp    LISTEN     0      5                      *:873                   *:*      users:(("rsync",64141,3))



# chkconfig rsync on

# service xinetd start

或者写入rc.local

echo '/usr/bin/rsync --daemon' >> /etc/rc.local



二、rsync客户端配置步骤(需要备份的服务器如web/nfs/mysql等)

1、创建密码文件

echo "jack">/etc/rsync.password

chmod 600 /etc/rsync.password

mkdir /backup


添加配置文件


vim /etc/rsyncd.conf



uid = rsync

gid = rsync

use chroot = no

max connections = 20

timeout = 600

pid file = /var/run/rsyncd.pid

lock file = /var/run/rsync.lock

log file = /var/log/rsyncd.log


[backup]

path = /backup

ignore errors

read only = false

list = false

hosts allow = 192.168.3.0/24

hosts deny = 0.0.0.0/32

auth users = rsync_backup

secrets file = /etc/rsync.password


2、rsync测试


rsync -avz /backup/ rsync://rsync_backup@192.168.3.12/backup --password-file=/etc/rsync.password



报错:

# rsync -avz /backup/ rsync://rsync_backup@192.168.3.12/backup/ --password-file=/etc/rsync.password 

@ERROR: auth failed on module backup

rsync error: error starting client-server protocol (code 5) at main.c(1503) [sender=3.0.6]


解决办法:

是因为服务端配置文件加了注释,去掉注释重启即可


md5指纹测试,对某个文件生成md5码,然后修改文件发现md5sum -c验证不通过

# md5sum /etc/hosts > zhiwen.txt

# md5sum -c zhiwen.txt

/etc/hosts: OK

# echo "#" >> /etc/hosts

# md5sum -c zhiwen.txt 

/etc/hosts: FAILED

md5sum: WARNING: 1 computed checksum did NOT match


创建测试目录:

mkdir -p /var/html/www

touch /var/html/www/{1..10}

mkdir /app/logs/ -p

touch /app/logs/{a..g}

mkdir -p /server/scripts


压缩文件

# tar zcvfh /backup/sys_config_$(date +%F).tar.gz /var/spool/cron /etc/rc.local /server/scripts


客户端自动备份脚本:

vim /server/scripts/bak.sh


#!/bin/bash

export PATH=/bin:/sbin/bin:/usr/sbin:/usr/bin

IP=$(/sbin/ifconfig eth0|awk -F "[ :]+" 'NR==2{print $4}')

bakpath=/backup

/bin/mkdir $bakpath/$IP -p


if [ $(date +%w) -eq 2 ];then

  date="$(date +%F -d "-1day")_week1"

else

  date="$(date +%F -d "-1day")"

fi


cd / &&\

/bin/tar zcfh $bakpath/$IP/sys_config_$(date +%F).tar.gz var/spool/cron etc/rc.local server/scripts &&\

/bin/tar zcf $bakpath/$IP/web_data_$(date +%F).tar.gz var/html/www/ &&\

/bin/tar zcf $bakpath/$IP/access_log_$(date +%F).tar.gz app/logs &&\

find $bakpath -type f -name "*.tar.gz"|xargs md5sum > $bakpath/$IP/flag_$(date +%F)


# bak data to backupserer

rsync -avz $bakpath/ rsync://rsync_backup@192.168.3.12/backup --password-file=/etc/rsync.password


# del data 7 days ago

find $bakpath -type f -mtime +7|xargs rm -f


添加计划任务,每天一次备份并且向backup服务器推送

00 00 * * * /bin/bash /server/scripts/bak.sh > /dev/null 2>&1


三、在backup备份服务器上添加检测功能并且进行邮件发送报警


添加一行vim /etc/mail.rc


set from=username@163.com smtp=smtp.163.com smtp-auth-user=pass smtp-auth-password=reblue.520 smtp-auth=login


测试邮件是否能够正常发送,这个配置通过163.com向qq发送信息是ok的,需要在163邮箱配置中开启smtp发送

echo 'yunva telnolegy infomation'|mail -s 'yunva.com' 111@qq.com


添加自动发送邮件脚本:

vim /server/scripts/checkbak.sh


#!/bin/bash

if [ $(date +%w) -eq 2 ];then

  date="$(date +%F -d "-1day")_week1"

else

  date="$(date +%F -d "-1day")"

fi


find /backup/ -name "flag_${date}*" |xargs md5sum -c &>>/tmp/mail_$(date +%F).log

find /backup/ -type f -name "*.tar.gz" -a ! -name "*week1*" -mtime +1 | xargs rm -f


mail -s "backup `date`" 111@qq.com < /tmp/mail_$(date +%F).log

# cp命令前面一定要加 \ 表示命令隔开,如果不加shell会认为是一个命令

\cp /tmp/mail_$(date +%F).log /tmp/mail_$(date +%F).log.ori

>/tmp/mail_$(date +%F).log



添加计划任务,每天6点检查并且发送邮件提醒

00 06 * * * /bin/bash /server/scripts/checkbak.sh > /dev/null 2>&1

企业级整站集群数据备份项目方案详解_web服务器_02