題目要求:
所有服務(wù)器的備份目錄必須都為/backup
要備份的系統(tǒng)配置文件包括但不限于:
a) 定時任務(wù)服務(wù)的配置文件 (/var/spool/cron/root) (適合 web 和 nfs 服務(wù)器)。
b) 開機(jī)自啟動的配置文件 (/etc/rc.local) (適合 web 和 nfs 服務(wù)器)燃乍。
c) 日常腳本的目錄 (/server/scripts)
Web 服務(wù)器站點(diǎn)目錄假定為/var/html/www唆樊,如果沒有可以先模擬創(chuàng)建。
Web 服務(wù)器訪問日志路徑假定為/app/logs橘沥,如果沒有可以先模擬創(chuàng)建窗轩。
Web 服務(wù)器本地保留打包后的 7 天備份數(shù)據(jù)即可(本地留存不能多于 7 天,因?yàn)樘嘤脖P會滿) 座咆。
備份服務(wù)器 backup 上,保留最近 7 天的備份數(shù)據(jù)痢艺,同時保留 6 個月內(nèi)每周一的所有數(shù)據(jù)副本。
備份服務(wù)器上,要按照備份數(shù)據(jù)服務(wù)器的內(nèi)網(wǎng) IP 為目錄保存?zhèn)浞萁樘眨瑐浞莸奈募凑諘r間名字保存堤舒。
需要確保備份的數(shù)據(jù)盡量完整正確,在備份服務(wù)器上對備份的數(shù)據(jù)是否完整
進(jìn)行檢查哺呜。
每天早晨 8:00 把備份成功或失敗結(jié)果信息發(fā)給系統(tǒng)管理員郵箱中
all server /backup 備份目錄 統(tǒng)一服務(wù)器本地備份目錄舌缤,便于管理
all server /var/spool/cron/root 定時任務(wù)服務(wù)配置文件
all server /etc/rc.local 開機(jī)自啟動配置文件
all server /server/scripts 日常腳本目錄 統(tǒng)一服務(wù)器本地腳本目錄,便于管理
web server /var/html/wwwweb 服務(wù)器站點(diǎn)目錄 mkdir -p /var/html/www
web server /app/logsweb 服務(wù)器訪問日志路徑 mkdir –p /app/logs
解答
第一步:首先我們要先搭建好我們的環(huán)境,并且在backup端個web端測試能否推送數(shù)據(jù)国撵。
第二步:建立備份目錄/backup陵吸;
/var/spool/cron/root /etc/rc.local /server/scripts /var/html/www /app/logs 以及我們所需要備份的內(nèi)容。
第三步:模擬創(chuàng)建
[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客戶端寫腳本創(chuàng)建腳本目錄
[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客戶端編寫腳本內(nèi)容:
#!/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 <==執(zhí)行腳本
[root@web01 /server/scripts]# ls /backup/ <<==查看結(jié)果
bak_2019-04-16_2.tar.gz
第五步:web客戶端編寫我們的定時任務(wù)
[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]# #校驗(yàn)
[root@nfs01 /server/scripts]# md5sum -c zhiwen.log
oldboy.txt: 確定
然后去服務(wù)端/backup查看一下我們的腳本以及結(jié)果。
[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
數(shù)據(jù)壓縮包從web客戶端推送過來后我們要按題目要求進(jìn)行服務(wù)端操作
第一:我們先cd到/backup下查看下由服務(wù)端發(fā)來的文件
[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
可以看到所有壓縮包和加密文件都發(fā)送過來了环础,我們可以進(jìn)行腳本編輯了囚似。
第二:cd到/server/scripts下創(chuàng)建bak.sh腳本
[root@backup /server/scripts]# vim bak.sh
#!/bin/bash
#驗(yàn)證指紋
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
#發(fā)郵件
mail -s "oldboy" liutengda_212@163.com </backup/mail.log
第三:設(shè)置定時任務(wù)發(fā)送郵件給自的郵箱liutengda_212@163.com 。
最后我們要進(jìn)到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=此處填寫執(zhí)行碼 smtp-auth=login
萬事俱備饶唤,只欠東風(fēng)了 我們執(zhí)行下服務(wù)端腳本
root@backup /backup]# cd /server/scripts/
[root@backup /server/scripts]# sh bak.sh
最后我們綁定的郵箱就會收到來自虛擬機(jī)的郵件。