标签:rsync全网备份小结
rsync+crond 定时任务 全网备份
整体规划
1.主机名称与ip地址
服务器说明 外网IP 内网IP 主机名称
nginx 10.0.0.8/24 172.16.1.8/24 web01
NFS 10.0.0.31/24 172.16.1.31/24 nfs01
rsync 10.0.0.41/24 172.16.1.41/24 backup
2.目标将web01主机 FNS存储主机中的数据保存到backup主机中
主要保存内容如下
1.每晚上00 点在 Web 上打包系统配置文件 网站程序目录 日志并通过 推到 backup 上备份(NFS 存储服务器同 Web 服务器)
2.所有服务器的备份目录必须都为/backup
3. 定时任务服务的配置文件(/var/spool/cron/root)
开机自启动的配置文件(/etc/rc.local)
日常脚本的目录 (/server/scripts)
防火墙 iptables 的配置文件
web 服务器站点目录(/var/html/www)
Web 服务器 A 访问日志路径(/app/logs)
Web 服务器保留打包后的 7 天的备份数据
4.备份服务器上,保留每周一的所有数据副本,其它要保留 6 个月的数据副本
5.备份服务器上要按照备份数据服务器的内网 IP 为目录保存备份,备份的文件按照时间名字保存
6.需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据进行检查,把备份的成功及失败结果信息发给系统管理员邮箱中
部署阶段
1.backup上部署rsync服务端 在web服务器上部署rsync客户端
a.查看是否安装rsync软件 #rpm -qa rsync
b.安装rsync #yum install -y rsync
c.配置rsync配置文件 #vim /etc/rsyncd.conf
```
uid=rsync #rsync user
gid=rsync #rsync group
use chroot=no #安全选项
max conections=200 #最大连接数
timeout=300 #超时时间
pid file=/var/run/rsyncd.pid #pid file
lock file=/var/run/rsyncd.lock #lock file
log file=/var/log/rsync.logs) #log file
list=false #list
read only=false #read only
auth users=rsync_backup #auth users
secrets file=/etc/rsync.password #password file
hosts allow=172.16.1.0/24 #allow ip
hosts deny=0.0.0.0/32 #deny ip
[backup] #module
path=/backup #module path
```
d.创建用户 #useradd -s /sbin/nologin -M rsync
e.创建认证文件 #echo "rsync_backup:123">/etc/resync.password 将认证文件设置权限 #chmod 600 /etc/rsync.password
f.创建备份目录 #mkdir -p /backup #修改目录属性 chown -R rsync.rsync. /backup
g.启动rsync #rsync --daemon
h.检查是否启动 netstat -lnutp| grep rsync
i.将启动方式以脚本形式写入到/etc/init.d/rsyncd文件中
```
#!/bin/bash
. /etc/init.d/functions
# 定义变量
RSYNC_PID=/var/run/rsyncd.pid # rsync pid文件
RSYNC=rsync
start() {
# 如果rsyc进程文件存在 就不再打开
if [ ! -f "$RSYNC_PID" ]; then
rsync --daemon
return 0
fi
}
stop() {
# 如果rsyc进程文件存在 就不再打开
if [ -f "$RSYNC_PID" ]; then
kill `cat $RSYNC_PID`;
return 0
fi
}
restart() {
stop
sleep 1
start
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
restart
;;
*)
echo $"Usage: ${RSYNC} {start|stop|restart}"
;;
esac
```
j.将/etc/init.d/rsyncd 写入开机启动中 echo "/etc/init.d/syncd start">/etc/rc.local
##############################################服务端rsync进程配置完成
2.web01主机rsync客户端配置
a.查看是否安装rsync软件 #rpm -qa rsync
b.安装rsync #yum install -y rsync
c.配置/etc/rsync.password #echo "123">/etc/rsync.password
d.测试与backup主机连接 #将hosts文件推送到服务器中 rsync -avz /etc/hosts rsync_backup@backup::backup --password-file=/etc/rsync.password
###############################################客户端rsync配置完成
3.web本地实现打包功能与保留数据功能
#定义日期防止出现名称重复
配置文件 # tar -zcf /backup/conf_$(date +%F).tar.gz /var/spool/cron/root /etc/rc.local /server/scripts /etc/sysconfig/iptables
程序 tar -zcf /backup/www_$(date +%F).tar.gz /var/html/www
日志文件 tar -zcf /backup/logs_$(date +%F+%w).tar.gz /app/logs
#删除数据功能
find /backup -type f -name "*.tar.gz" -mtime +7 | xargs rm -f
###############################################webserver Over
4.web本地实现打包功能与保留数据功能与web类似,不做详细描述
5.web配置定时任务
a.编辑脚本内容 vim /server/scripts/backup.sh
#!/bin/bash
#get ip 这个ip需要根据个人机器详细情况而定
IP=`ifconfig | awk -F ‘[ :]+‘ ‘NR==11{print $4}‘`
#设定web01主机备份的路径IP是之前获取的内容
Path="/backup/"$IP
#create path
#担心误删除操作,会创建这些文件夹
mkdir -p /var/spool/cron/ /server/scripts/ /var/html/www /app/logs $Path
#create compress data 创建压缩包或目录
tar -zcf $Path/conf_$(date +%F+%w).tar.gz /var/spool/cron/root /etc/rc.local /server/scripts /etc/sysconfig/iptables 2>/dev/null
tar -zcf $Path/www_$(date +%F+%w).tar.gz /var/html/www 2>/dev/null
tar -zcf $Path/logs_$(date +%F+%w).tar.gz /app/logs 2>/dev/null
#md5sum 指纹验证实现
md5sum $Path/*$(date +%F+%w).tar.gz >$Path/flag_$(date +%F+%w).txt
#delete data 删除多余数据
find $Path -type f -name "*.tar.gz" -mtime +7 | xargs rm -f 2>/dev/null
#pull data #推送数据
rsync -avz /backup/ rsync_backup@backup::backup --password-file=/etc/rsync.password
b.测试脚本
sh /server/scripts/backup.sh
c.服务器端检测
d.确保数据无误后将写入定时任务中 #contab -e
00 00 * * * sh /server/scripts/backup.sh
###############################################Webserver Over
6.NFS01主机配置定时任务与web01主机配置定时任务相仿,不做描述
7.服务器端验证、删除多余数据 发送邮件
a.服务器端验证 #vim /server/scripts/chbackup.sh
```
#!/bin/bash
#check backup
#md5sum -c 检查之前的验证文件是否相同
message=`md5sum -c /backup/********/flag_$(date +%F+%w).txt 2>/dev/null`
```
b.删除多余数据 #vim /server/scripts/del.sh
```
#!/bin/bash
#del backdata
#删除6个月之前的数据 且 没有 "+1"(周一) 字符开的文件名
find /backup -type f -name "*.tar.gz" -mtime +180|grep -v "+1" | xargs rm -f
```
c.发送邮件服务
1.查看/etc/init.d/postfix 是否启动 #/etc/init.d/postfix status
启动方式为: /etc/init.d/postfix start
如果启动失败:查看/etc/postfix/main.rc文件 第116行 将
```
116 inet_interfaces = localhost
117
118 # Enable IPv4, and IPv6 if supported
119 inet_protocols = all
```
改为
```
116 inet_interfaces = 127.0.0.1
117
118 # Enable IPv4, and IPv6 if supported
119 inet_protocols = all
```
重新启动
2.修改/etc/mail.rc #vim /etc/mail.rc
在最后追加
```
set from=xxxxxxx@163.com smtp=smtp.163.com
set smtp-auth-user=xxxxxxx@163.com smtp-auth-password=xxxxxxxxx smtp-auth=login
```
上面使用是网易邮箱,实现发送邮件
3.测试发送电子邮件
echo "test" | mail -s "test" xxxxxxxx@163.com
4.完整的检验文件及发送邮件过程 #vim /service/scripts/chbackup.sh
```
#!/bin/bash
#check backup
message=`md5sum -c /backup/********/flag_$(date +%F+%w).txt 2>/dev/null`
echo "$message" | mail -s " the messages of rsync and crond Server ----$(date +%F)" xxxxxx@163.com
```
5.检查邮箱
```
the messages of rsync and crond Server ----2017-10-12 ###标题
/backup/172.16.1.31/conf_2017-10-12+4.tar.gz: FAILED open or read #这是故意删除做的掩饰
/backup/172.16.1.8/conf_2017-10-12+4.tar.gz: OK
/backup/172.16.1.8/logs_2017-10-12+4.tar.gz: OK
/backup/172.16.1.8/www_2017-10-12+4.tar.gz: OK
```
本文出自 “安宇的博客” 博客,谢绝转载!
标签:rsync全网备份小结
原文地址:http://anyuweb.blog.51cto.com/8675781/1971874