第九周-day36-综合架构-rsync全网备份

该博客围绕企业rsync全网备份实战项目展开。准备web01和backup两台机器,先在客户端web01进行取IP、打包备份、推送备份、制作校验信息、删除旧备份等操作,写入脚本并设置定时任务;接着在backup服务器配置,保留周六数据,检查备份结果,写入校验信息,发送邮件,最后将命令写入脚本并设置定时任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

企业实战项目:rsync全网备份的过程

在这里插入图片描述
image.png

某公司里有一台Web服务器,里面的数据很重要,但是如果硬盘坏了,数据就会丢失,现在领导要求你把数据在其他机器上做一个周期性定时备份。要求如下:

1.每天晚上12点整在Web服务器A(web01 )上打包备份网站程序目录并通过rsync命令推送到服务器B(backup)上备份保留
(备份思路可以是先在本地按日期打包,然后再利用rsync推到备份服务器上)。
rsync守护进程模式 
定时任务 (脚本)

具体要求如下:
1)Web服务器A和备份服务器B的备份目录必须都为/backup。
#扩展要求/backup/ip地址命名目录中
2)Web服务器站点目录假定为(/var/www/html)3)Web服务器本地仅保留7天内的备份。

4)备份服务器上每周六的数据都保留,其他备份仅保留180天备份。
5)备份服务器上检查备份结果是否正常(备份内容变?),并将每天的备份结果发给管理员信箱。
	
发邮件:	
1.注册一个163的邮箱 	
2.保证 postfix 邮件服务运行

首先准备俩台机器
web01 10.0.0.7
backup 10.0.0.41
配置rsync守护进程模式并测试
让服务端和客户端可以实现推拉


然后我们来完成全网备份的任务:

一、首先是下面四步:

客户端web01

1.取ip地址,并在/backup/下以ip地址为目录
2.打包备份/etc/ /var/www/html 到/backup/172.16.1.7,压缩包命名为conf-2019-05-20-1.tar.gz
3.把备份推送到backup服务器的backup模块中
4.删除7天之前的备份

1.取ip地址,并在/backup/下以ip地址为目录

[15:48 root@web01 ~]# hostname -I
10.0.0.7 172.16.1.7 
[15:48 root@web01 ~]# hostname -I|awk '{print $NF}'
172.16.1.7
[15:49 root@web01 ~]# IP=$(hostname -I|awk '{print $NF}')
[15:49 root@web01 ~]# echo $IP
172.16.1.7
[15:49 root@web01 ~]# mkdir -p /backup/$IP
[15:50 root@web01 ~]# ll /backup/
total 0
drwxr-xr-x 2 root root 38 May 21 15:48 172.16.1.7

2.打包备份/etc/ /var/www/html 到/backup/172.16.1.7

压缩包命名为conf-2019-05-20-1.tar.gz
创建一个/var/www/html目录

[6:01 root@web01 ~]# mkdir -p /var/www/html
[16:01 root@web01 ~]# echo $IP
172.16.1.7
[16:01 root@web01 ~]# mkdir -p /backup/$IP
[16:01 root@web01 ~]# tar zcf /backup/$IP/conf-$(date +%F-%w).tar.gz /etc/ /var/www/html
tar: Removing leading `/' from member names
[16:01 root@web01 ~]# tree /backup/
/backup/
└── 172.16.1.7
    └── conf-2019-05-21-2.tar.gz

3.把备份推送到backup服务器的backup模块中

[16:34 root@web01 ~]# rsync -avz /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password 
sending incremental file list
./
172.16.1.7/
172.16.1.7/conf-2019-05-21-2.tar.gz

sent 10,016,822 bytes  received 54 bytes  6,677,917.33 bytes/sec
total size is 10,214,680  speedup is 1.02

服务端看一下:

[16:35 root@backup ~]# tree /backup/
/backup/
└── 172.16.1.7
    └── conf-2019-05-21-2.tar.gz

1 directory, 1 file

4. 制作md5校验信息

[19:51 root@web01 ~]# find /backup/ -type f -name "*.tar.gz"|xargs md5sum 
37f059ed20b843ed23b212b42a8a63f2  /backup/172.16.1.7/conf-2019-05-21-2.tar.gz
[19:52 root@web01 ~]# find /backup/ -type f -name "*.tar.gz"|xargs md5sum >/backup/*/*.md5
[19:52 root@web01 ~]# cat /backup/*/*.md5
37f059ed20b843ed23b212b42a8a63f2  /backup/172.16.1.7/conf-2019-05-21-2.tar.gz

5.删除7天之前的备份

find /backup/ -type f -name "*.tar.gz" -mtime +7|xargs rm -rf

以上4步完成后把/backup下的测试文件删除掉

6.然后我们就可以写入脚本文件了

[16:45 root@web01 ~]# vim /server/scripts/rsync_backup.sh 
#!/usr/bin/bash
. /etc/profile
#定义变量
IP=$(hostname -I|awk '{print $NF}')
HOSTNAME=$(hostname)
#创建目录
mkdir -p /backup/$IP
#打包压缩
tar zcf /backup/$IP/conf-$(date +%F-%w).tar.gz /etc/ /var/www/html
#md5校验
find /backup/ -type f -name "*.tar.gz"|xargs md5sum >/backup/$IP/$HOSTNAME.md5
#推送
rsync -az /backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
#删除7天之前的
find /backup/ -type f -name "*.tar.gz" -mtime +7|xargs rm -rf

md5sum校验信息在下文中

7.执行一下脚本并查看目录是否创建成功

[17:48 root@web01 ~]# tree /backup/
/backup/
└── 172.16.1.7
    ├── conf-2019-05-21-2.tar.gz
    └── web01.md5

1 directory, 2 files

1 directory, 1 file

8.写入定时任务测试是否成功然后修改规定时间

每天晚上12点备份

[17:02 root@web01 ~]# crontab -e
#rsync_backup
00 00 * * * sh /server/scripts/rsync_backup.sh  >/dev/null 2>&1

二、接着我们去backup服务器上配置

我们为了方便测试,可以先创建6个从周一到周6的备份文件
忽略180天,环境中没有

[17:12 root@backup ~]# touch /backup/172.16.1.7/conf-2019-05-21-{0..6}.tar.gz 
[17:13 root@backup ~]# find /backup/ -type f -name "*.tar.gz"
/backup/172.16.1.7/conf-2019-05-21-2.tar.gz
/backup/172.16.1.7/conf-2019-05-21-0.tar.gz
/backup/172.16.1.7/conf-2019-05-21-1.tar.gz
/backup/172.16.1.7/conf-2019-05-21-3.tar.gz
/backup/172.16.1.7/conf-2019-05-21-4.tar.gz
/backup/172.16.1.7/conf-2019-05-21-5.tar.gz
/backup/172.16.1.7/conf-2019-05-21-6.tar.gz

1.备份服务器上的每周六的数据都保留,其他备份仅保留180天备份

先测试一下如何保留周六的数据

[17:14 root@backup ~]# find /backup/ -type f -name "*.tar.gz" ! -name "*-6.tar.gz"
/backup/172.16.1.7/conf-2019-05-21-2.tar.gz
/backup/172.16.1.7/conf-2019-05-21-0.tar.gz
/backup/172.16.1.7/conf-2019-05-21-1.tar.gz
/backup/172.16.1.7/conf-2019-05-21-3.tar.gz
/backup/172.16.1.7/conf-2019-05-21-4.tar.gz
/backup/172.16.1.7/conf-2019-05-21-5.tar.gz

然后删除掉

[17:20 root@backup ~]# find /backup/ -type f -name "*.tar.gz" ! -name "*-6.tar.gz"|xargs rm -rf
[17:21 root@backup ~]# ll /backup/172.16.1.7/
total 0
-rw-r--r-- 1 root root 0 May 21 17:13 conf-2019-05-21-6.tar.gz

2.检查备份结果是否正常(备份内容是否改变?)

md5sum检验信息

[17:21 root@backup ~]# tree /backup/
/backup/
└── 172.16.1.7
    └── conf-2019-05-21-6.tar.gz

1 directory, 1 file
[17:22 root@backup ~]# find /backup/ -type f -name "*.tar.gz" |xargs md5sum
d41d8cd98f00b204e9800998ecf8427e  /backup/172.16.1.7/conf-2019-05-21-6.tar.gz
[17:22 root@backup ~]# find /backup/ -type f -name "*.tar.gz" |xargs md5sum >/backup/172.16.1.7/web01.md5
[17:23 root@backup ~]# md5sum -c /backup/172.16.1.7/web01.md5 
/backup/172.16.1.7/conf-2019-05-21-6.tar.gz: OK

校验md5信息的几种方法

[17:42 root@backup ~]# cp -a /backup/172.16.1.7/ /backup/172.16.1.8
[17:42 root@backup ~]# cp -a /backup/172.16.1.7/ /backup/172.16.1.9
[17:42 root@backup ~]# cp -a /backup/172.16.1.7/ /backup/172.16.1.10
[17:42 root@backup ~]# find /backup/ -type f -name "*.md5"|xargs md5sum -c
/backup/172.16.1.7/conf-2019-05-21-2.tar.gz: OK
/backup/172.16.1.7/conf-2019-05-21-2.tar.gz: OK
/backup/172.16.1.7/conf-2019-05-21-2.tar.gz: OK
/backup/172.16.1.7/conf-2019-05-21-2.tar.gz: OK
/backup/172.16.1.7/conf-2019-05-21-2.tar.gz: OK
/backup/172.16.1.7/conf-2019-05-21-2.tar.gz: OK
/backup/172.16.1.7/conf-2019-05-21-2.tar.gz: OK
[17:42 root@backup ~]# md5sum -c /backup/\*/\*.md5   \\撬棍无意义
/backup/172.16.1.7/conf-2019-05-21-2.tar.gz: OK
/backup/172.16.1.7/conf-2019-05-21-2.tar.gz: OK
/backup/172.16.1.7/conf-2019-05-21-2.tar.gz: OK
/backup/172.16.1.7/conf-2019-05-21-2.tar.gz: OK

3.将校验信息写入文件中

先创建一个文件/backup/md5.txt

[18:48 root@backup ~]# find /backup/ -type f -name "*.md5"|xargs md5sum -c 
/backup/172.16.1.7/conf-2019-05-21-2.tar.gz: OK
[18:51 root@backup ~]# find /backup/ -type f -name "*.md5"|xargs md5sum -c >/backup/md5.txt 
[18:52 root@backup ~]# cat /backup/md5.txt 
/backup/172.16.1.7/conf-2019-05-21-2.tar.gz: OK

4.发送邮件

1.注册一个163的邮箱

记得添加配置邮箱的授权码,不然邮箱会被屏蔽掉了

2.保证 postfix 邮件服务运行

[17:47 root@backup ~]# systemctl restart postfix.service 
[17:50 root@backup ~]# systemctl is-active postfix.service 
active
[17:50 root@backup ~]# systemctl is-enabled postfix.service 
enabled

3.配置邮箱配置文件

默认没有安装
yum install -y mailx

配置/etc/mail.rc最后一行加入:

[17:56 root@backup ~]# vim /etc/mail.rc 
....
set from=lichenxing0430@163.com
set smtp=smtp.163.com
set smtp-auth-user=lichenxing0430
set smtp-auth-password=\\邮箱密码,这里不方便写入
set smtp‐auth=login

执行一下发送邮件的命令

mail -s:指定邮件的主题
mail -s " Rsync Backup 完成" lichenxing0430@163.com </backup/md5.txt

稍等几秒钟…

5.以上完成后我们就可以将命令写到脚本里了

[19:02 root@backup ~]# vim /server/scripts/backup.sh 
#!/bin/bash
. /etc/profile
#校验md5信息
find /backup/ -type f -name "*.md5"|xargs md5sum -c >/backup/md5.txt
#删除180天前的
find /backup/ -type f -name "*.tar.gz" ! -name "*-6.tar.gz" -mtime +180|xargs rm -rf
#发送邮件
mail -s " Rsync Backup 完成" 245684979@qq.com </backup/md5.txt

6.书写定时任务

[19:06 root@backup ~]# crontab -e
#backup.sh
00 06 * * *  sh /server/scripts/check_backup.sh >/dev/null 2>&1
今天的知识点看似很多其实不多,要理解客户端和服务端的每一条脚本命令的作用。

未完待续…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值