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

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

第九周-day36-rsync全网备份.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.制作md5校验
5.删除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

今天的知识点看似很多其实不多,要理解客户端和服务端的每一条脚本命令的作用。

未完待续......

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343