rsync项目实战(备份全网服务器数据生产架构方案)
案例:
某公司里有一台Web服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据在其他机器上做一个周期性定时备份。要求如下:每天晚上00点整在Web服务器A上打包备份网站程序目录并通过rsync命令推送到服务器B上备份保存(备份思路可以是先在本地按日期打包,然后再利用rsync推送到备份服务器上)。
具体要求:
1)rsync服务的socket方式传递,(客户端,服务端(web))
2)web服务器站点目录为(/var/www/html)
3)归档压缩web目录内容为日期格式,例如:/backup/www.20190915.tar.gz),web服务器本地仅保留7天内的备份。
4)备份服务器上检查备份结果是否正常(对比大小(服务文件—客户端文件对比)md5sum 生成校验码,使用校验码对比),并将每天的备份结果发给管理员信箱(自学 postfix)。
5)备份保留180天。
服务器分类 | 用户名 | IP地址 |
---|---|---|
web服务器A | localhost | IP:192.168.19.152 |
备份服务器B | nebulalinux | IP:192.168.19.20 |
操作系统:
[root@nebulalinux backup]# uname -r
3.10.0-957.el7.x86_64
rsync是否安装:
[root@nebulalinux backup]# rpm -qa rsync
rsync-3.1.2-10.el7.x86_64
搭建服务前关闭防火墙及SElinux
(1)在备份服务器中搭建服务
[root@nebulalinux backup]# cat /etc/rsyncd.conf
uid = root
gid = root
use chroot = no
max connections = 200
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.19.0/24
hosts deny = 0.0.0.0/32
auth users = rsync_backup
secrets file = /etc/rsync.password
创建共享目录和添加rsync用户:
[root@nebulalinux backup]# useradd -M -s /sbin/nologin rsync
[root@nebulalinux backup]# mkdir /backup/
[root@nebulalinux backup]# rsync --daemon
[root@nebulalinux backup]# chown -R rsync:rsync /backup/
[root@nebulalinux backup]# chmod -R 755 /backup/
[root@nebulalinux backup]# echo “rsync_backup:123456” > /etc/rsync.password
[root@nebulalinux backup]# chmod 600 /etc/rsync.password
[root@nebulalinux backup]# echo “rsync --daemon” >> /etc/rc.local
重启rsync服务:
关闭:pkill rsync
启动:rsync --daemon
(2)在web服务器A搭建rsync环境
[root@localhost tmp]# rpm -qa rsync
rsync-3.1.2-10.el7.x86_64
[root@localhost tmp]# echo “123456” > /etc/rsync.password
[root@localhost tmp]# chmod 600 /etc/rsync.password
(3)在备份端编写简单脚本,删除180天以前的备份,并将脚本加到定时任务中
[root@nebulalinux ~]# cat rmfile.sh
#!/bin/bash
find /backup/ -type f -name"*.tar.gz" -mtime +180 -exec rm -rf{} ;
[root@nebulalinux ~]# crontab -l
#######################
00 00 * * * sh /root/rmfile.sh > /dev/null 2>&1
(4)在web服务器A创建备份目录并测试拉取效果
[root@localhost /]# mkdir backup
[root@localhost /]# chown -R rsync:rsync /backup/
[root@localhost backup]# rsync -avzP ./123456 rsync_backup@192.168.19.20::backup --password-file=/etc/rsync.password
sending incremental file list
123456
0 100% 0.00kB/s 0:00:00 (xfr#1, to-chk=0/1)
sent 89 bytes received 43 bytes 264.00 bytes/sec
total size is 0 speedup is 0.00
[root@nebulalinux backup]# ls
123456
(5)在web服务器A上编写打包同步脚本
(6)添加到定时任务中
[root@localhost ~]# crontab -l
00 00 * * * sh /root/bak.sh > /dev/null 2>&1
本文地址:https://blog.csdn.net/m0_45318174/article/details/107159620
下一篇: 关于CRC的一些练习