將全網(wǎng)架構(gòu)中所有服務器上重要的數(shù)據(jù)進行匯總備份保存
創(chuàng)新互聯(lián)專注于鉛山企業(yè)網(wǎng)站建設,自適應網(wǎng)站建設,電子商務商城網(wǎng)站建設。鉛山網(wǎng)站建設公司,為鉛山等地區(qū)提供建站服務。全流程按需設計網(wǎng)站,專業(yè)設計,全程項目跟蹤,創(chuàng)新互聯(lián)專業(yè)和態(tài)度為您提供的服務自動化:數(shù)據(jù)信息的自動備份
規(guī)范化:避免備份數(shù)據(jù)出錯
①. 規(guī)劃定義好備份服務器
a 部署rsync備份服務(采用rsync守護進程方式)
b 編寫腳本文件管理備份數(shù)據(jù)信息
c 編寫定時任務執(zhí)行腳本管理數(shù)據(jù)(難點)
②. 確認驗證好架構(gòu)服務器
a 驗證rsync備份服務
b 編寫腳本文件統(tǒng)一備份數(shù)據(jù)信息(難點)
c 編寫定時任務執(zhí)行腳本備份數(shù)據(jù)
驗證軟件是否存在
[root@backup~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64
檢查配置文件
##rsyncd.conf start## 配置文件描述信息
uid = rsync #用戶 遠端的命令使用rsync訪問共享目錄
gid = rsync #用戶組
use chroot = no #安全相關(guān)
max connections = 200 #大的連接數(shù)
timeout = 300 #超時時間
pid file = /var/run/rsyncd.pid #存放服務運行的時候 進程的ID號(PID)
lock file = /var/run/rsync.lock #進程的鎖文件
log file = /var/log/rsyncd.log #運行程序日志文件,顯示出錯信息等
[backup] #模塊名稱
path = /backup #模塊對應的位置(路徑)
ignore errors #忽略錯誤程序
read only = false #是否只讀
list = false #是否可以列表
hosts allow = 172.16.1.0/24 #允許訪問rsync服務器的客戶范圍(白名單)
hosts deny = 0.0.0.0/32 #禁止訪問rsync服務器的客戶范圍(黑名單)
auth users = rsync_backup #不存在的用戶,只用于開門(認證)
secrets file = /etc/rsync.passwor #不存在的用戶進行認證時的密鑰文件
comment = "backup dir by oldboy" #
創(chuàng)建虛擬用戶管理rsync程序
[root@backup~]# # 創(chuàng)建用戶
[root@backup~]# useradd -s /sbin/nologin -M rsync
創(chuàng)建完成后查看
[root@backup~]# id rsync
uid=500(rsync)gid=500(rsync) groups=500(rsync)
4. 檢查rsync服務認證用戶密碼文件是否存在
[root@backup~]# cat /etc/rsync.password
rsync_backup:123456
記得檢查密碼文件權(quán)限是不是600
[root@backup~]# chmod 600 /etc/rsync.password
[root@backup~]# ll /etc/rsync.password
-rw------- 1root root 20 May 4 12:04/etc/rsync.password
5. 創(chuàng)建共享存儲目錄
[root@backup~]# # 創(chuàng)建目錄
[root@backup~]# mkdir /backup -p
[root@backup~]# ll -d /backup/
drwxr-xr-x 2root root 4096 May 4 12:00 /backup/
[root@backup~]# # 修改備份目錄權(quán)限
[root@backup~]# chown -R rsync.rsync /backup/
[root@backup~]# ll -d /backup/
drwxr-xr-x 2rsync rsync 4096 May 4 12:00 /backup/
6. 啟動rsync 服務器
[root@backup~]# ps -ef |grep rsync
root 5138 1 0 01:31 ? 00:00:00 rsync --daemon
root 6503 6391 0 09:04 pts/1 00:00:00 grep --color=auto rsync
[root@backup~]# netstat -luntp |grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 5138/rsync
tcp 0 0 :::873 :::* LISTEN 5138/rsync
沒有的話 打開
rsync --daemon
7. 將rsync啟動命令放入到開機自啟動文件中
[root@backup~]# echo "rsync --daemon" >> /etc/rc.local
[root@backup~]# tail -1 /etc/rc.local
rsync--daemon
第一個里程碑要做
1. 創(chuàng)建用戶認證密碼文件,實現(xiàn)數(shù)據(jù)備份傳輸免密鑰
[root@nfs01~]# cat /etc/rsync.password
123456
查看目錄權(quán)限 修改成600
[root@nfs01~]# ll /etc/rsync.password
-rw-------1 root root 7 May 5 10:02/etc/rsync.password
2. 測試rsync服務數(shù)據(jù)備份傳輸
1. 本地創(chuàng)建backup備份目錄 mkdir -p /backup
2. 將備份數(shù)據(jù)統(tǒng)一壓縮進行保存 有軟鏈接文件 tar -zchf
3. 推送備份目錄數(shù)據(jù)到rsync備份服務器上 --password-file=
4. 刪除本地保存的7天前的數(shù)據(jù)信息
find /backup/$Host_IP -type f -mtime+7 -name "*.tar.gz" |xargs rm -f
5. 對備份數(shù)據(jù)數(shù)據(jù)進行驗證,加上指紋信息 md5sum 生成數(shù)據(jù)文件指紋信息
vim/server/scripts/backup_nginx.sh
#!/bin/bash
#oldboy at2017 5 backup data
Host_IP=$(hostname-I|awk '{print $2}')
Date_info=$(date+%F_week0%w)
# createbackup data dir
mkdir -p/backup
mkdir/var/html/www -p
mkdir/app/logs/ -p
# tar datainfo
cd /&&\
mkdir /backup/$Host_IP-p
tar zchf/backup/$Host_IP/sysbak_date_${Date_info}.tar.gz ./var/spool/cron/root ./etc/rc.local./server/scripts ./etc/sysconfig/iptables
tar zchf/backup/$Host_IP/www_date_${Date_info}.tar.gz ./var/html/www
tar zchf/backup/$Host_IP/logs_date_${Date_info}.tar.gz ./app/logs
# rsync pushfiger info
find/backup/$Host_IP/ -type f -name "*${Date_info}.tar.gz" |xargs md5sum>/backup/$Host_IP/finger_${Date_info}.txt
# rsync pushdata to rsync_server
rsync -az/backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
# cleardata info for 7 day ago
find/backup/$Host_IP -type f -mtime +7 -name "*.tar.gz" |xargs rm -f
find/backup/$Host_IP -type f -mtime +7 -name "finger*" |xargs rm -f
a. 驗證數(shù)據(jù)完整性 md5sum -c 客戶端傳輸過來的指紋文件
b. 將完整性驗證結(jié)果,通過郵件發(fā)送給監(jiān)管人員 郵箱的配置 與 發(fā)送郵件的方式(兩種方式發(fā)送郵件)
01:發(fā)送郵件方式,利用文件方式表示郵件內(nèi)容
mail -s "check data" 18735676310@163.com
02:發(fā)送郵件,利用命令行方式表示郵件內(nèi)容
# echo "系統(tǒng)有異常問題,請檢查系統(tǒng)"|mail -s "異常告警" 18735676310@163.com
說明:echo后面接上要發(fā)送的郵件信息,mail -s后面接上郵件標題,最后表示要將郵件發(fā)送給誰
c. 將180天的數(shù)據(jù)進行刪除,保留每周一的數(shù)據(jù)
find /backup/ -type f -mtime +180 !-name "*week01.tar.gz"|xargs rm -f
vim /server/scritps/backup_rsync.sh
[root@backuptmp]# cat /server/scripts/backup_server.sh
#!/bin/bash
Date_info=$(date+%F_week0%w)
# check datainfo
find /backup/-type f -name "finger_${Date_info}.txt" |xargs md5sum -c>/tmp/figer_cheak.txt
# send cheakinfo mail
mail -s"cheak date" 18735676310@163.com
# delete180day ago date ; save week01
find /backup/-type f -mtime +180 ! -name "*week01.tar.gz" |xargs rm -f
① rsync客戶端編寫定時任務
nginx客戶端的定時任務
#crond-id-002:push backup torsync
00 00 * * * /bin/bash/server/scripts/backup_nginx.sh >/dev/null 2>&1
nfs客戶端的定時任務
#crond-id-002:push backup torsync
00 00 * * * /bin/bash/server/scripts/backup_nfs.sh >/dev/null 2>&1
② .rsync服務端編寫定時任務
rsync服務端的定時任務
#crotab-id002:backup NFS nginx
00 06 * * * /bin/bash/server/scripts/backup_rsync.sh >/dev/null 2>&1
上面兩個客戶端的定時任務寫的是每天晚上12點整進行打包發(fā)送,而rsync服務器的定時任務是每天早上6點進行發(fā)送。
① . 每周一的數(shù)據(jù)進行保存,確認清楚什么是周一的數(shù)據(jù)
/backup/$(hostname-I|awk '{print $2}')/sysbak_date_$(date+%F_week0%w).tar.gz./var/spool/cron/root
所以在打包壓縮文件的時候就考慮到了這一點$(date+%F_week0%w)這個在文件名字上面加上了周幾,所以在保存數(shù)據(jù)的時候能起到關(guān)鍵性作用。
find /backup/ -type f -mtime +180 ! -name"*week01.tar.gz" |xargs rm -f
② . 驗證數(shù)據(jù)完整性是什么概念
因為數(shù)據(jù)是從客戶端傳過來的,為了保證數(shù)據(jù)沒有修改和丟失,在發(fā)送數(shù)據(jù)時,給數(shù)據(jù)進行加密處理,然后服務端收到數(shù)據(jù)和加密處理文件時,會進行比對。如果串碼一樣,說明沒有丟失和修改。
If you do not leave me . I will by your side untillthe life end
四級水平:你如果不離開我,我就和你同歸于盡,
六級水平:你若不離不棄,我必生死相依。
八級水平:問世間情為何物?直教人生死相許。
十級水平:天地合,乃敢與君絕。
佛祖水平:你在或不在,愛就在那里,不增不減。
rsync守護進程模式配置步驟
檢查服務端
1.檢查軟件是否存在
[root@backup~]# rpm -qa rsync
rsync-3.0.6-12.el6.x86_64
2.檢查配置文件
[root@backup~]# cat /etc/rsyncd.conf
##rsyncd.conftart##
uid =rsync
gid =rsync
usechroot = no
maxconnections = 200
timeout= 300
pidfile = /var/run/rsyncd.pid
lockfile = /var/run/rsync.lock
logfile = /var/log/rsyncd.log
[backup]
path= /backup
ignoreerrors
readonly = false
list= false
hostsallow = 172.16.1.0/24
hostsdeny = 0.0.0.0/32
authusers = rsync_backup,oldboy
secretsfile = /etc/rsync.password
[data]
path= /data
ignoreerrors
readonly = false
list= false
hostsallow = 172.16.1.0/24
hostsdeny = 0.0.0.0/32
authusers = rsync_backup,oldboy
secretsfile = /etc/rsync.password
3.創(chuàng)建虛擬用戶管理rsync程序
[root@backup~]# # 創(chuàng)建用戶
[root@backup~]# useradd -s /sbin/nologin -M rsync
4.檢查rsync服務認證用戶密碼文件是否存在
[root@backup~]# cat /etc/rsync.password
rsync_backup:123456
記得檢查密碼文件權(quán)限是不是600
5.創(chuàng)建共享存儲目錄
mkdir /backup/ -p
修改目錄的屬組和屬主
[root@backup~]# ll -d /backup/
drwxr-xr-x5 rsync rsync 4096 May 5 15:35 /backup/
6.啟動rsync服務器
[root@backup~]# ps -ef |grep rsync
root 5138 1 0 01:31 ? 00:00:00 rsync --daemon
root 6503 6391 0 09:04 pts/1 00:00:00 grep --color=auto rsync
[root@backup~]# netstat -luntp |grep 873
tcp 0 0 0.0.0.0:873 0.0.0.0:* LISTEN 5138/rsync
tcp 0 0 :::873 :::* LISTEN 5138/rsync
沒有的話 打開
rsync --daemon
7.將rsync啟動命令放入到開機自啟動文件中
[root@backup~]# echo "rsync --daemon" >> /etc/rc.local
[root@backup~]# tail -1 /etc/rc.local
rsync--daemon
客戶端:
1. 創(chuàng)建用戶認證密碼文件,實現(xiàn)數(shù)據(jù)備份傳輸免密鑰
[root@nfs01~]# cat /etc/rsync.password
123456
查看目錄權(quán)限 修改成600
[root@nfs01~]# ll /etc/rsync.password
-rw-------1 root root 7 May 5 10:02 /etc/rsync.password
2. 測試rsync服務數(shù)據(jù)備份傳輸
第二個里程碑:編寫數(shù)據(jù)備份腳本
nginx nfs
--rsync客戶端編寫的備份腳本
客戶端nginx編寫的腳本
vim/server/scripts/backup_nginx.sh 要規(guī)范腳本的名稱和存放腳本的目錄
#!/bin/bash 命令解釋器
#oldboy at2017 5 backup data 必要的注釋
Host_IP=$(hostname-I|awk '{print $2}') 設置的別名
Date_info=$(date+%F_week0%w) 設置的別名
# createbackup data dir 要創(chuàng)建的目錄
mkdir -p/backup
mkdir/var/html/www -p
mkdir/app/logs/ -p
# tar datainfo 打包目的的注釋
cd /&&\ 一定要在根目錄下面進行打包,
mkdir/backup/$Host_IP -p
tar zchf/backup/$Host_IP/sysbak_date_${Date_info}.tar.gz ./var/spool/cron/root ./etc/rc.local./server/scripts ./etc/sysconfig/iptables 記得要加h參數(shù),可以打包軟鏈接
tar zchf /backup/$Host_IP/www_date_${Date_info}.tar.gz ./var/html/www
tar zchf/backup/$Host_IP/logs_date_${Date_info}.tar.gz ./app/logs
# rsync pushfiger info
find/backup/$Host_IP/ -type f -name "*${Date_info}.tar.gz" |xargs md5sum>/backup/$Host_IP/finger_${Date_info}.txt 把找到的文件進行加密
# rsync pushdata to rsync_server
rsync -az/backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
免密鑰進行打包傳輸數(shù)據(jù)
# cleardata info for 7 day ago 刪除七天前的文件
find/backup/$Host_IP -type f -mtime +7 -name "*.tar.gz" |xargs rm -f
find/backup/$Host_IP -type f -mtime +7 -name "finger*" |xargs rm -f
--nfs客戶端編寫的備份腳本
vim/server/scripts/backup_nfs.sh 要規(guī)范腳本的名稱和存放腳本的目錄
#!/bin/bash 命令解釋器
#oldboy at2017 5 backup data 必要的注釋
Host_IP=$(hostname-I|awk '{print $2}')
Date_info=$(date+%F_week0%w)
# createbackup data dir
mkdir -p/backup
# tar datainfo
cd /&&\ 一定要在根目錄下面進行打包
mkdir/backup/$Host_IP -p
tar zchf
/backup/$Host_IP/sysbak_date_${Date_info}.tar.gz ./var/spool/cron/root ./etc/rc.local./server/scripts ./etc/sysconfig/iptables 記得要加h參數(shù),可以打包軟鏈接
# rsync pushfiger info
find/backup/$Host_IP/ -type f -name "*${Date_info}.tar.gz" |xargs md5sum>/backup/$Host_IP/finger_${Date_info}.txt
把找到的文件進行加密
# rsync pushdata to rsync_server
rsync -az/backup/ rsync_backup@172.16.1.41::backup --password-file=/etc/rsync.password
免密鑰進行打包傳輸數(shù)據(jù)
# cleardata info for 7 day ago
find/backup/$Host_IP -type f -mtime +7 -name "*.tar.gz" |xargs rm -f
find/backup/$Host_IP -type f -mtime +7 -name "finger*" |xargs rm -f
備份服務器端 --rsync服務端編寫備份腳本
--rsync服務端編寫備份腳本
vim/server/scripts/backup_rsync.sh要規(guī)范腳本的名稱和存放腳本的目錄
#!/bin/bash 命令解釋器
Date_info=$(date+%F_week0%w)
# check datainfo 查找傳過來的密碼就行比對,將結(jié)果追加到figer_cheak.txt文件中
find /backup/-type f -name "finger_${Date_info}.txt" |xargs md5sum -c>/tmp/figer_cheak.txt
# send cheakinfo mail 把文件的內(nèi)容發(fā)送到郵箱
mail -s"cheak date" 18735676310@163.com
# delete180day ago date ; save week01 刪除180天的文件除了每星期一的文件
find /backup/-type f -mtime +180 ! -name "*week01.tar.gz" |xargs rm -f
第三個里程碑:配置定時任務
①rsync客戶端編寫定時任務
nginx客戶端的定時任務
#crond-id-002:push backup torsync
00 00 * * * /bin/bash/server/scripts/backup_nginx.sh >/dev/null 2>&1
nfs客戶端的定時任務
#crond-id-002:push backup torsync
00 00 * * * /bin/bash/server/scripts/backup_nfs.sh >/dev/null 2>&1
②. rsync服務端編寫定時任務
rsync服務端的定時任務
#crotab-id002:backup NFS nginx
00 06 * * * /bin/bash/server/scripts/backup_rsync.sh >/dev/null 2>&1
上面兩個客戶端的定時任務寫的是每天晚上12點整進行打包發(fā)送,而rsync服務器的定時任務是每天早上6點進行發(fā)送。因為如果服務端也是晚上12點整進行備份,怕客戶端的還沒有發(fā)送過來就沒有文件,所有往后推一點時間最好。
對傳輸?shù)奈募M行加密
[root@nfs01~]# md5sum /etc/hosts
c559a5da81a3ecc708ae5d84985a0776 /etc/hosts
指紋加密特點:雪崩效應
進入到郵件發(fā)送的配置文件中,編輯發(fā)送郵件的參數(shù)信息
vim/etc/mail.rc
setfrom=18735676310@163.com smtp=smtp.163.com
setsmtp-auth-user=18735676310@163.com smtp-auth-password=Zr950220 smtp-auth=login
setfrom=郵箱地址@163.com smtp=smtp.163.com <-郵件發(fā)送郵件服務器域名,此處為163郵箱的發(fā)送服務器域名
setsmtp-auth-user=郵箱賬號 smtp-auth-password=登錄郵箱密碼 smtp-auth=login
說明:設置發(fā)送郵件是從哪個公共郵箱地址發(fā)送,采用的發(fā)送郵件服務器域名,公共郵箱賬號和密碼
01:發(fā)送郵件方式,利用文件方式表示郵件內(nèi)容
mail -s "check data"2722982316@qq.com
02:發(fā)送郵件,利用命令行方式表示郵件內(nèi)容
# echo "系統(tǒng)有異常問題,請檢查系統(tǒng)"|mail -s "異常告警" 17778058507@163.com
說明:echo后面接上要發(fā)送的郵件信息,mail -s后面接上郵件標題,最后表示要將郵件發(fā)送給誰
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。