綜合架構備份項目

歡迎大家訪問我的博客:blog.54newpower.top



綜合架構備份項目

0.環境準備

主機名

描述

外網IP

內網IP

nfs01

存儲服務器

10.0.0.31/24

172.16.1.31/24

web01

web服務器

10.0.0.10/24

172.16.1.10/24

backup

備份服務器

10.0.0.41/24

172.16.1.41/24

0.1前提:

備份服務端已經部署好rsync守護進程,web01和nfs01需要部署好rsync的認證密碼信息,確保rsync服務能夠正常運行

0.2驗證:

確保backup服務端已經開啓rsync服務,併產看端口信息:

[root@backup ~]#systemctl status rsyncd
● rsyncd.service - fast remote file copy program daemon
   Loaded: loaded (/usr/lib/systemd/system/rsyncd.service; enabled; vendor preset: disabled)
   Active: active (running) since Sat 2020-05-02 08:23:36 CST; 12h ago
 Main PID: 838 (rsync)
   CGroup: /system.slice/rsyncd.service
           └─838 /usr/bin/rsync --daemon --no-detach

May 02 08:23:36 backup systemd[1]: Started fast remote file copy program daemon.
May 02 08:23:36 backup systemd[1]: Starting fast remote file copy program daemon...
[root@backup ~]#netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address  Foreign Address         State       PID/Program name    
tcp        0      0 0.0.0.0:873     0.0.0.0:*               LISTEN      838/rsync           
tcp        0      0 0.0.0.0:22      0.0.0.0:*               LISTEN      1343/sshd           
tcp        0      0 127.0.0.1:25    0.0.0.0:*               LISTEN      1430/master         
tcp6       0      0 :::873          :::*                    LISTEN      838/rsync           
tcp6       0      0 :::22           :::*                    LISTEN      1343/sshd           
tcp6       0      0 ::1:25          :::*                    LISTEN      1430/master     

檢查web01和nfs01是否已經配置好rsync服務認證密碼,檢查數據是否可以正常同步到backup的backup模塊;在web01和nfs01服務器分別創建/backup目錄,用於備份時的本地目錄,並且在其中創建名爲主機名的文本文件用於驗證與backup服務之間可以正常同步數據:

[root@nfs01 ~]#rsync -avz /backup/ rsync_backup@backup::backup --password-file=/etc/rsync.password
sending incremental file list
./

sent 69 bytes  received 27 bytes  192.00 bytes/sec
total size is 0  speedup is 0.00

[root@web01 ~]#rsync -avz /backup/ rsync_backup@backup::backup --password-file=/etc/rsync.password
sending incremental file list

sent 62 bytes  received 20 bytes  164.00 bytes/sec
total size is 0  speedup is 0.00

[root@backup /backup]#ls -l
total 4
-rw-r--r-- 1 rsync rsync 371 Apr 19 10:04 hosts
-rw-r--r-- 1 rsync rsync   0 May  2 21:04 nfs01

1.項目要求

1.1具體要求如下:

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.2要求總結

1)每天晚上00點整在web服務器上打包備份系統配置文件、網站程序目錄及訪問日誌並通過rsync命令推送備份服務器backup上備份保留。
2)每天晚上00點整在nfs服務器上打包備份系統配置文件,並通過rsync命令推送備份服務器backup上備份保留。
思路:
備份思路可以是先在本地按日期打包,然後再推到備份服務器backup上,備份完成後要進入解壓文件,查看一下是否有內容,nfs存儲服務器同web服務器,實際工作中就是全部的服務器。

這些要求都是運維自己寫出來的,實際工作中,老大可能就說一句,把服務器數據備份下。

2.準備測試環境

具體思路:

根據項目的要求,自己創建出必要的文件及其目錄:具體包括網站的站點目錄/var/html/www,訪問日誌/app/logs,並且包含不同時間的文件(修改系統時間創建所需要的文件或者是目錄,注意,之前創建了定時任務:每個五分鐘自動同步一次時間,現在可以先關閉,等到創建完成所需文件後,在將時間修正即可)

web01站點目錄下存放站點的源碼文件(用wordpress安裝包代替),日誌目錄下拷貝一些日誌文件過來;nfs01創建一個/data目錄,並往裏寫入一些數據;在打包的時候,注意打包幾份不同日期的壓縮文件,並且文件名中要包含要打包的文件名稱和打包的時間;

先把命令一條條的執行,在逐步的彙總完善,最終編寫成一個簡單的腳本,在配合定時任務,最終實現整體的功能

3.web01應完成的工作

項目用到的一些數據準備過程比較容易,拷貝一些數據即可,由此省略;直接開始打包備份的操作

系統文件的打包備份:

打包完成的文件格式:文件名稱backup_2020-04-13星期\tar.gz

cd /
tar zchf /backup/system_backup_$(date +%F_%A).tar.gz ./var/spool/cron/root ./etc/rc.local ./etc/sysconfig

設置不同的系統時間,多次執行,創建出不同時間的備份數據

cd / && tar zchf /backup/www_log_backup_$(date +%F_%A).tar.gz  ./app/logs
cd / && tar zchf /backup/www_backup_$(date +%F_%A).tar.gz  ./var/html/www

打包完成之後的文件:

[root@web01 /]#ls -l /backup/
total 65936
-rw-r--r-- 1 root root    48009 Mar 30  2019 system_backup_2019-03-30_Saturday.tar.gz
-rw-r--r-- 1 root root    48009 Apr  1  2019 system_backup_2019-04-01_Monday.tar.gz
-rw-r--r-- 1 root root    48009 Apr 30  2019 system_backup_2019-04-30_Tuesday.tar.gz
-rw-r--r-- 1 root root    48009 Apr 30 00:00 system_backup_2020-04-30_Thursday.tar.gz
-rw-r--r-- 1 root root    48009 May  1 00:00 system_backup_2020-05-01_Friday.tar.gz
-rw-r--r-- 1 root root    48009 May  2 23:05 system_backup_2020-05-02_Saturday.tar.gz
-rw-r--r-- 1 root root 33476258 May  2 23:14 www_backup_2020-05-02_Saturday.tar.gz
-rw-r--r-- 1 root root 33745422 May  2 23:16 www_log_backup_2020-05-02_Saturday.tar.gz

生成打包文件的指紋信息

md5sum www_backup_2020-05-02_Saturday.tar.gz >$(hostname)_$(hostname -i)_$(date +%F).finger

刪除7天之前的數據文件

find /backup -type f -mtime +7|xargs rm

推送數據

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

整合命令並且編寫腳本

#!/bin/bash
##定義一些變量
backup_dir="/backup"
host_name="$(hostname)_$(hostname -i)"

# 創建本地備份目錄
[ -e $backup_dir/$host_name ] || mkdir -p $backup_dir/$host_name

# 創建本地備份壓縮文件,備份站點目錄和日誌目錄
cd / &&
tar zchf $backup_dir/$host_name/system_backup_$(date +%F_%A).tar.gz ./var/spool/cron/root ./etc/rc.local ./etc/sysconfig
tar zchf $backup_dir/$host_name/www_log_backup_$(date +%F_%A).tar.gz ./app/logs
tar zchf $backup_dir/$host_name/www_backup_$(date +%F_%A).tar.gz ./var/html/www
#生成文件指紋信息
find $backup_dir/$host_name/ -type f -mtime -1 ! -name "*.finger" |xargs md5sum  >$backup_dir/$host_name/$(date +%F).finger
# 傳輸備份數據
rsync -az $backup_dir/$host_name/  [email protected]::backup/$host_name --password-file=/etc/rsync.password

# 刪除七天以前備份數據
find $backup_dir -type f -mtime +7|xargs rm 2>/dev/null

添加定時腳本

#list02 date_backup editor w****** time 2020-05-03
* 2 * * * /bin/bash /server/scripts/data_backup.sh >/dev/null

4.nfs01應完成的工作

系統文件的打包備份:

打包完成的文件格式:文件名稱backup_2020-04-13星期\tar.gz

cd /
tar zchf /backup/system_backup_$(date +%F_%A).tar.gz ./var/spool/cron/root ./etc/rc.local ./etc/sysconfig

設置不同的系統時間,多次執行,創建出不同時間的備份數據

tar zchf /backup/data_backup_$(date +%F_%A).tar.gz  ./data

打包完成之後的文件:

[root@nfs01 /]#ls -l /backup/
total 8
-rw-r--r-- 1 root root 111 May  2 23:17 data_backup_2020-05-02_Saturday.tar.gz
-rw-r--r-- 1 root root  45 May  2 23:14 www_backup_2020-05-02_Saturday.tar.gz

生成打包文件的指紋信息

md5sum data_backup_2020-05-02_Saturday.tar.gz >$(hostname)_$(hostname -i)_$(date +%F).finger

刪除7天之前的數據文件

find /backup -type f -mtime +7|xargs rm

推送數據

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

整合命令並且編寫腳本

#!/bin/bash
##定義一些變量
backup_dir="/backup"
host_name="$(hostname)_$(hostname -i)"

# 創建本地備份目錄
[ -e $backup_dir/$host_name ] || mkdir -p $backup_dir/$host_name

# 創建本地備份壓縮文件,備份站點目錄和日誌目錄
cd / &&
tar zchf $backup_dir/$host_name/system_backup_$(date +%F_%A).tar.gz ./var/spool/cron/root ./etc/rc.local ./etc/sysconfig
tar zchf $backup_dir/$host_name/data_$(date +%F_%A).tar.gz  ./data
#生成文件指紋信息
find $backup_dir/$host_name/ -type f -mtime -1 ! -name "*.finger" |xargs md5sum  >$backup_dir/$host_name/$(date +%F).finger
# 傳輸備份數據
rsync -az $backup_dir/$host_name/  [email protected]::backup/$host_name --password-file=/etc/rsync.password

# 刪除七天以前備份數據
find $backup_dir -type f -mtime +7|xargs rm 2>/dev/null

添加定時腳本

crontab -e
#添加以下內容
#list02 date_backup editor w****** time 2020-05-03
* 2 * * * /bin/bash /server/scripts/data_backup.sh >/dev/null

 

5.backup服務端完成的工作

驗證數據的完整性

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

刪除半年之前(180天)的備份數據

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

發送數據完整性的結果到指定郵箱

mail -s "backup_check_info" w******@126.com </tmp/check_info.txt

整合命令並編寫腳本

#!/bin/bash
#驗證數據完整性
find /backup/ -type f -mtime -1 -name "*.finger"|xargs md5sum -c &>/backup/$(date +%F).finger.check
#發送驗證結果到指定郵箱
mail -s "backup_check_results" w******@126.com </backup/$(date +%F).finger.check
#刪除180天之前的備份文件
find /backup/ -type f -mtime +180 ! -name "*Monday.tar.gz"|xargs rm 2>/dev/null

添加定時腳本

crontab -e
#添加以下內容
#list02 data_backup_check editor wangsonghu time 2020-05-03
1 2 * * * /bin/bash /server/scripts/data_backup_check.sh >/dev/null

附加:

郵箱的配置:

vim /etc/mail.rc
#添加以下內容,需要登錄郵箱獲取授權碼
set from=w******@126.com smtp=smtp.126.com
set smtp-auth-user=w******@126.com smtp-auth-password=******* smtp-auth=login
#重啓郵箱服務
systemctl restart postfix.service

注意

編寫的腳本要添加執行權限,腳本內容要有註釋信息,定時任務也要有註釋,並且定時任務要經過測試!


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章