天天看點

全網資料備份方案方法一:在檔案名稱中顯示星期資訊data+%A/date +%w方法二:将周一資料單獨儲存今天是周一将這兩條指令添加到最後一行!/bin/bash建立本地備份目錄建立本地備份壓縮檔案,備份站點目錄和日志目錄生成資料指紋資訊傳輸備份資料删除七天以前備份資料!/bin/bash建立本地備份目錄建立本地備份壓縮檔案生成資料指紋資訊傳輸備份資料删除七天以前備份資料!/bin/bash驗證資料完整性發送郵件資訊通知删除6個月之前資料

全網資料備份方案

1 項目備份環境

已知3台伺服器主機名分别為web01、backup、nfs01,主機資訊見下表:

伺服器說明 外網IP 内網IP 主機名稱

web伺服器 10.0.0.7/24 172.16.1.7/24 web01

nfs存儲伺服器 10.0.0.31/24 172.16.1.31/24 nfs01

rsync備份伺服器 10.0.0.41/24 172.16.1.41/24 backup

2 項目備份要求

具體要求如下:

(1)所有伺服器的備份目錄必須都為/backup。

(2)要備份的系統配置檔案包括但不限于:

a.定時任務服務的配置檔案(/var/spool/cron/root)(适合web和nfs伺服器)。
b.開機自啟動的配置檔案(/etc/rc.local)(适合web和nfs伺服器)。
c.日常腳本的目錄 (/server/scripts)(适合web和nfs伺服器)。
d.防火牆iptables或firewalld配置檔案(/etc/sysconfig/iptables或 /etc/firewalld)(适合web和nfs伺服器)。
e.自己思考下還有什麼需要備份呢?           

(3)Web伺服器站點目錄假定為(/var/html/www)(适合web伺服器)。

(4)Web伺服器A通路日志路徑假定為(/app/logs)(适合web伺服器)。

(5)Web伺服器保留打包後的7天的備份資料即可(本地留存不能多于7天,因為太多硬碟會滿)

(6)備份伺服器上,保留最近6個月的備份資料,同時保留6個月之前每周一的所有資料

(7)備份伺服器上要按照備份資料伺服器的内網IP為目錄儲存備份,備份的檔案按照時間名字儲存。

(8)需要確定備份的資料盡量完整正确,在備份伺服器上對備份的資料進行檢查,把備份的成功及失敗結果資訊發給系統管理者郵箱中

(9)搭建NFS存儲實作web伺服器網站圖檔、附件共享

(10)NFS存儲資料實時備份

(1)每天晚上00點整在web伺服器上打包備份系統配置檔案、網站程式目錄及通路日志并通過rsync指令推送備份伺服器backup上備份保留。

(2)每天晚上00點整在nfs伺服器上打包備份系統配置檔案,并通過rsync指令推送備份伺服器backup上備份保留。

思路:

備份思路可以是先在本地按日期打包,然後再推到備份伺服器backup上,備份完成後要進入解壓檔案,檢視一下是否有内容,nfs存儲伺服器同web伺服器,實際工作中就是全部的伺服器。

3 項目備份邏輯架構圖

1.jpg

4 項目實施配置

(1)首先三台伺服器的備份目錄都要為backup

mkdir /backup #web01,nfs01,backup伺服器都要建立backup

(2)要備份的系統配置檔案包括但不限于

a.定時任務服務的配置檔案(/var/spool/cron/root)(适合web和nfs伺服器)。
b.開機自啟動的配置檔案(/etc/rc.local)(适合web和nfs伺服器)。
c.日常腳本的目錄 (/server/scripts)(适合web和nfs伺服器)。
d.防火牆iptables或firewalld配置檔案(/etc/sysconfig/iptables或 /etc/firewalld)(适合web和nfs伺服器)。
            

[root@web01 ~]# mkdir /var/html/www -p

[root@web01 ~]# mkdir /app/logs -p

(5)Web伺服器保留打包後的7天的備份資料。

find /backup -type f -mtime +7 -name "*.tar.gz"|xargs rm 2>/dev/null

2>/dev/null:如果沒有7天之前的資料會産生錯誤報告資訊,是以将錯誤資訊追加到/dev/null,不會産生錯誤資訊。

(6)備份伺服器上,保留最近6個月的備份資料,同時保留6個月之前每周一的所有資料。

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

方法一:在檔案名稱中顯示星期資訊

data+%A/date +%w

find /backup/ -type f -name ".tar.gz" -mtime +180 ! -name "星期1.tar.gz"|xargs rm 2>/dev/null

方法二:将周一資料單獨儲存

今天是周一

mkdir /backup/week01

rsync -avz /backup/week01 [email protected]::backup/week01/

find /backup/ -path "/backup/week01" -prune -o -type f -name "*.tar.gz" -print |xargs rm

[root@backup ~]# mkdir /backup/172.16.1.7 172.16.1.31

rsync -avz /backup/ [email protected]::backup --password-file=/etc/rsync.password

md5sum /backup/172.16.1.31/system_backup_2019-07-18_星期4.tar.gz >/backup/172.16.1.31/finger.txt

md5值追加給finger.txt(指紋檔案)

md5sum -c finger.txt ### 自動對比md5值

vim /etc/mail.rc

set [email protected] smtp=smtp.163.com

set [email protected] smtp-auth-password=ichn123456 smtp-auth=login

将這兩條指令添加到最後一行

systemctl restart postfix.service # 重新開機郵件

echo "linux ichn62"|mail -s "test_mail" [email protected] # 測試郵件是否能發送

mail -s "test_mail" [email protected] /hosts # 測試郵件是否能發送

整理以上指令編寫腳本

mkdir /server/scripts/ #建立腳本目錄

[root@web01 scripts]#vi system_backup.sh

!/bin/bash

Dir_info="/backup"

IP_info="$(hostname -i)"

建立本地備份目錄

mkdir -p $Dir_info/$IP_info

建立本地備份壓縮檔案,備份站點目錄和日志目錄

cd /

tar zchf $Dir_info/$IP_info/system_backup_$(date +%F_星期%w).tar.gz ./var/spool/cron/root ./etc/rc.local ./server/scripts ./etc/sysconfig/iptables

tar zchf $Dir_info/$IP_info/web_backup_$(date +%F_星期%w).tar.gz ./var/html/www/

tar zchf $Dir_info/$IP_info/web_log_$(date +%F_星期%w).tar.gz ./app/logs/

生成資料指紋資訊

find $Dir_info/$IP_info/ -type f -name "*.tar.gz" -mtime -1|xargs md5sum >$Dir_info/$IP_info/finger.txt

傳輸備份資料

rsync -az $Dir_info/ [email protected]::backup --password-file=/etc/rsync.password

删除七天以前備份資料

find $Dir_info -type f -mtime +7 -name "*.tar.gz"|xargs rm 2>/dev/null

[root@nfs01 scripts]#vi system_backup.sh

建立本地備份壓縮檔案

[root@backup scripts]#vi backup_check.sh

[root@backup scripts]#cat backup_check.sh

!/bin/bash

驗證資料完整性

find /backup/ -type f -name "finger.txt"|xargs md5sum -c &>/tmp/check_info.txt

發送郵件資訊通知

mail -s "backup_check_info" [email protected] /check_info.txt

删除6個月之前資料

編寫定時任務

WEB服務端:

[root@web01 /]#crontab -e

00 00 * /bin/sh /server/scripts/system_backup.sh &>/dev/null

NFS用戶端:

[root@nfs01 /]#crontab -e

backup服務端:

[root@backup /]#crontab -e

0 6 * /bin/sh /server/scripts/backup_check.sh &>/dev/null

可以修改系統時間來驗證腳本,定時是否成功。

webwxgetmsgimg.jpg

原文位址

https://www.cnblogs.com/zeq912/p/11211331.html

繼續閱讀