实战:将web端下文件加指纹推送到backup端并发送邮件

题目要求:

所有服务器的备份目录必须都为/backup
要备份的系统配置文件包括但不限于:
a) 定时任务服务的配置文件 (/var/spool/cron/root) (适合 web 和 nfs 服务器)。
b) 开机自启动的配置文件 (/etc/rc.local) (适合 web 和 nfs 服务器)。
c) 日常脚本的目录 (/server/scripts)
Web 服务器站点目录假定为/var/html/www,如果没有可以先模拟创建。
Web 服务器访问日志路径假定为/app/logs,如果没有可以先模拟创建。
Web 服务器本地保留打包后的 7 天备份数据即可(本地留存不能多于 7 天,因为太多硬盘会满) 。
备份服务器 backup 上,保留最近 7 天的备份数据,同时保留 6 个月内每周一的所有数据副本。
备份服务器上,要按照备份数据服务器的内网 IP 为目录保存备份,备份的文件按照时间名字保存。
需要确保备份的数据尽量完整正确,在备份服务器上对备份的数据是否完整
进行检查。
每天早晨 8:00 把备份成功或失败结果信息发给系统管理员邮箱中

all server /backup 备份目录 统一服务器本地备份目录,便于管理
all server /var/spool/cron/root 定时任务服务配置文件
all server /etc/rc.local 开机自启动配置文件
all server /server/scripts 日常脚本目录 统一服务器本地脚本目录,便于管理
web server /var/html/wwwweb 服务器站点目录 mkdir -p /var/html/www
web server /app/logsweb 服务器访问日志路径 mkdir –p /app/logs

解答

第一步:首先我们要先搭建好我们的环境,并且在backup端个web端测试能否推送数据。
第二步:建立备份目录/backup;
/var/spool/cron/root /etc/rc.local /server/scripts /var/html/www /app/logs 以及我们所需要备份的内容。
第三步:模拟创建

[root@nfs01 ~]# mkdir -p /server/scripts
[root@web01 ~]# mkdir -p /server/scripts /var/html/www /app/logs
web01:
[root@web01 ~]# mkdir -p /backup
[root@web01 ~]# ls -ld /backup/
drwxr-xr-x 2 root root 6 4月  16 11:36 /backup/
[root@web01 /]# tar zcvhf /backup/bak_$(date+%F_%w).tar.gz /var/spool/cron/root /etc/rc.local /server/scripts /var/html/www /app/logs   <<==打包backup目录下以bak+日期和周开头的压缩包。
tar: 从成员名中删除开头的“/”
/var/spool/cron/root
/etc/rc.local
/server/scripts/
/var/html/www/
/app/logs/

[root@web01 /]# ls /backup/ <<=== 查看我们打包的文件
bak_2019-04-16_2.tar.gz

第三步web客户端写脚本创建脚本目录
[root@web01 /]# mkdir /server/scripts/ -p
[root@web01 /]# cd /server/scripts/
[root@web01 /server/scripts]# cat /server/scripts/bak.sh
[root@web01 /server/scripts]# cat bak.sh
第四步web客户端编写脚本内容:

#!/bin/sh
export PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin"
export RSYNC_PASSWORD=oldboy
IP=$(hostname -i)
mkdir -p /backup/$IP
#1.打包/var/spool/cron/root /etc/rc.local /server/scripts /var/html/www /app/logs
tar zchf /backup/$IP/bak_$(date +%F_%w).tar.gz /var/spool/cron/root /etc/rc.local /server/scripts /var/html/www /app/logs &>/dev/null &&\
#2.删除
find /backup/ -type f -name "*.tar.gz" -mtime +7|xargs rm -f &&\
#3采集指纹
find /backup/$IP -type f -name "*.tar.gz"|xargs md5sum >/backup/$IP/$IP_$(date 
+%F).flag &&\
#4.推送
rsync -az /backup/ rsync_backup@172.16.1.41::backup &>/dev/null

[root@web01 /server/scripts]# /bin/sh /server/scripts/bak.sh <==执行脚本
[root@web01 /server/scripts]# ls /backup/ <<==查看结果
bak_2019-04-16_2.tar.gz
第五步:web客户端编写我们的定时任务

[root@web01 /server/scripts]# crontab -e
[root@web01 /server/scripts]# crontab -l|tail -2
######back.....
00 00 * * * /bin/sh /server/scripts/bak.sh >/dev/null 2>&1
[root@web01 /server/scripts]# find /backup/ -type f -name "*.tar.gz" -mtime +7|xargs rm -f

注:这里讲一下指纹文件:
确保备份完整。
做flag和采集指纹

[root@nfs01 /server/scripts]# #采集指纹
[root@nfs01 /server/scripts]# md5sum oldboy.txt >zhiwen.log
[root@nfs01 /server/scripts]# cat zhiwen.log 
348bd3ce10ec00ecc29d31ec97cd5839  oldboy.txt
[root@nfs01 /server/scripts]# #校验
[root@nfs01 /server/scripts]# md5sum -c zhiwen.log 
oldboy.txt: 确定

然后去服务端/backup查看一下我们的脚本以及结果。

[root@backup /backup]# ll
总用量 8
drwxr-xr-x 2 rsync rsync 114 4月  18 20:58 172.16.1.7
-rw-r--r-- 1 root  root    0 4月  18 19:47 1.txt
-rw-r--r-- 1 root  root   51 4月  18 17:44 mail.log
-rw-r--r-- 1 rsync rsync 117 4月  15 18:36 tar.gz

数据压缩包从web客户端推送过来后我们要按题目要求进行服务端操作

第一:我们先cd到/backup下查看下由服务端发来的文件

[root@backup /backup]# ls
172.16.1.7  1.txt  mail.log  tar.gz
[root@backup /backup]# cd 172.16.1.7
[root@backup /backup/172.16.1.7]# ls
2019-04-16.flag  bak_2019-04-16_2.tar.gz
2019-04-18.flag  bak_2019-04-18_4.tar.gz

可以看到所有压缩包和加密文件都发送过来了,我们可以进行脚本编辑了。
第二:cd到/server/scripts下创建bak.sh脚本

[root@backup /server/scripts]# vim bak.sh 
#!/bin/bash
#验证指纹
find /backup/ -type f -name "*.flag"|xargs md5sum -c >/backup/mail.log &&\
#删除
find /backup/ -type f -name "*.tar.gz" -mtime +180|xargs rm -f &&\
find /backup/ -type f ! -name "*_week1.tar.gz" -mtime +7|xargs rm -f &&\
find /backup/ -type f -name "*.flag" -mtime +7|xargs rm -f
#发邮件
mail -s "oldboy" liutengda_212@163.com </backup/mail.log

第三:设置定时任务发送邮件给自的邮箱liutengda_212@163.com
最后我们要进到mail文件中把我们的邮箱信息添加到最后一行。

[root@backup /backup]# vim /etc/mail.rc
最后一行输入:
set from=liutengda_212@163.com smtp=smtp.163.com smtp-auth-user=liutengda_212 s
mtp-auth-password=此处填写执行码 smtp-auth=login

万事俱备,只欠东风了 我们执行下服务端脚本

root@backup /backup]# cd /server/scripts/
[root@backup /server/scripts]# sh bak.sh 

最后我们绑定的邮箱就会收到来自虚拟机的邮件。

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

推荐阅读更多精彩内容