使用rsync實現數據實時同步備份--實戰

實戰3:

配置rsync 服務器及需要備份的目錄,不使用系統用戶需要自己創建自己的配置文件: /etc/rsyncd.conf ; 創建備份帳戶,最後把rsync 以daemon方式運行。

配置文件:/etc/rsyncd.conf 整體分兩部分:

全局參數 :對於rsync 生效。如果模塊參數和全局參數衝突,針對衝突模塊的模塊參數生效

模塊參數: 定義rsync 輸出的目錄的參數。

無交互備份數據

編輯配置文件

[root@xuegod-63 ~]# vim /etc/rsyncd.conf

uid=nobody

gid=nobody

address = 192.168.1.63

port=873

hosts allow= 192.168.1.64

#hosts deny=0.0.0.0/32

use chroot=yes

max connections=5

pid file=/var/run/rsyncd.pid

lock file=/var/run/rsync.lock

log file=/var/log/rsyncd.log

motd file=/etc/rsyncd.motd

[wwwroot]

path=/var/www/html

comment=rsync wwwroot of www.xuegod.cn

read only=yes

list=yes

auth users=backuper

secrets file=/etc/rsync.passwd

此配置文件,參數 說明:

全局參數

uid=nobody #運行進程的身份

gid=nobody # 運行進程的組

address = 192.168.1.63 #監聽IP地址

port=873 #端口

hosts allow= 192.168.1.64 192.168.0.25 #允許同步的客戶端IP地址

單個IP地址,例如:192.167.0.1,多個IP或網段需要用空格隔開,

整個網段,例如:192.168.0.0/24,也可以是192.168.0.0/255.255.255.0

“*”則表示所有,默認是允許所有主機連接。

#hosts deny=0.0.0.0/32

use chroot=yes #鎖定家目錄。rsync被黑了,***無法在rsync運行的家目錄之外創建文件,該選項設置爲yes。

max connections=5 #最大鏈接數

pid file=/var/run/rsyncd.pid # pid文件。存放進程ID。自動生成

lock file=/var/run/rsync.lock #指定支持max connections參數的鎖文件。

log file=/var/log/rsyncd.log #日誌

motd file=/etc/rsyncd.motd #客戶端登錄後的彈出的信息。需要創建。子配置

模塊參數:

[wwwroot] #共享模塊名

path=/var/www/html #供備份的路徑

comment=rsync wwwroot of www.xuegod.cn # 描述,

read only=yes # 以只讀的方式 提供備份

list=yes #允許查看模塊信息

auth users=backuper #指定備份的用戶,和系統用戶 無關

secrets file=/etc/rsync.passwd #指點存放用戶 和密碼文件。格式: 用戶名:密碼

過濾子配置文件並追加信息到子配置文件

[root@xuegod-63 ~]# grep motd /etc/rsyncd.conf

motd file=/etc/rsyncd.motd

#過濾是爲了查找到各“子配置”文件在rsyncd.conf這個“總配置”文件中默認叫啥名,是怕“子配置”文件名創建錯了才這麼弄的。由此我們可以看到,子配置文件motd在/etc/rsyncd.motd/下

[root@xuegod-63 ~]# echo "welconme to backup server" > /etc/rsyncd.motd #將 "welconme to backup server"的歡迎信息寫入到子配置文件中去

過濾passwd子配置文件並設置密碼和修改權限

[root@xuegod-63 ~]# grep passwd /etc/rsyncd.conf

secrets file=/etc/rsync.passwd

[root@xuegod-63 ~]# vim /etc/rsync.passwd

backuper:123456

[root@xuegod-63 ~]# chmod 600 /etc/rsync.passwd

#設置rsyncd_users.db文件的權限爲700或600,權限設置不對的話身份驗證會失敗

會彈以下出錯信息,當然,輸錯密碼後,也會彈這個信息:

重啓xinetd服務:

[root@xuegod-63 ~]# /etc/init.d/xinetd restart

清空/web-back/目錄下的文件

[root@xuegod-64 ~]# rm -rf /web-back/* #清空以後,在wen-back下什麼都沒有了

無交互備份

[root@xuegod-64 ~]# rsync -azv [email protected]::wwwroot /web-back/ #將1.63下的用戶backuper的文件備份到本機1.64的/web-back/下

welconme to backup server

Password:

grub/

grub/device.map

grub/e2fs_stage1_5

再次查看目錄

[root@xuegod-64 ~]# ls /web-back/ #現在此目錄下 又有了grub目錄了

grub

#這樣就可以備份了

無交互不輸密碼進行備份

刪除備份到的目標目錄下文件

[root@xuegod-64 ~]# rm -rf /web-back/*

[root@xuegod-64 ~]# ls /web-back/

定義變量,export環境變量,免密碼rsync

[root@xuegod-64 ~]# export RSYNC_PASSWORD=123456

無交互備份

[root@xuegod-64 ~]# rsync -azv [email protected]::wwwroot /web-back/

rsync 選項 用戶名@備份源服務器IP::共享模塊名 目標目錄

#將1.63下的用戶backuper的文件備份到本機1.64的/web-back/下

welconme to backup server

grub/

grub/device.map

查看備份的目標目錄

[root@xuegod-64 ~]# ls /web-back/

Grub # 這時所需要被備份的目錄被備份過來了

再次刪除備份到的目標目錄下文件

[root@xuegod-64 ~]# rm -rf /web-back/*

[root@xuegod-64 ~]# ls /web-back/

編寫腳本

[root@xuegod-64 ~]# vim backup.sh

#!/bin/bash

export RSYNC_PASSWORD=123456

rsync -azv [email protected]::wwwroot /web-back/

增加權限並備份

[root@xuegod-64 ~]# chmod +x backup.sh

[root@xuegod-64 ~]# ./backup.sh

welconme to backup server

grub/device.map

grub/e2fs_stage1_5

#這個時候我們可以看到,備份文件不再需要輸入密碼了

[root@xuegod-64 ~]# ls /web-back/

grub

#文件已被備份過來了

編寫計劃任務

[root@xuegod-64 ~]# crontab -e

01 3 * /root/backup.sh &

#任務在每天的3點1分進行數據備份

添加防火牆規則:

[root@xuegod63 ~]# iptables -A INPUT -p tcp --dport 873 -j ACCEPT #讓防火牆對873端口進行放行

[root@xuegod63 ~]# /etc/init.d/iptables save #保存防火牆規則

iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]

實戰4:

目標:

配置rsync+inotify實時同步

把xuegod63.cn服務器上的/var/www/html目錄時實同步到xuegod64.cn主機上的/web-back目錄中。

概述

Linux內核從2.6.13版本開始提供了inotify通知接口,用來監控文件系統的各種變化情況,如文件存取、刪除、移動等。利用這一機制,可以非常方便地實現文件異動告警、增量備份,並針對目錄或文件的變化及時作出響應。使用rsync工具與inotify機制相結合,可以實現觸發式備份(實時同步),只要原始位置的文檔發生變化,則立即啓動增量備份操作,否則處於靜態等侍狀態,這樣一來,就避免了按固定週期備份進存在的延遲性、週期過密等問題。

環境

inotify-tools服務端:xuegod-63 IP:192.168.1.63

客戶端:xuegod-64 IP:192.168.1.64

查看是否支持inotify,從kernel 2.6.13開始正式併入內核。

[root@xuegod-63 ~]# uname -r

2.6.32-220.el6.x86_64

[root@xuegod-63 ~]# ls /proc/sys/fs/inotify/

max_queued_events max_user_instances max_user_watches

注:

在linux內核中,默認的inotify機制提供了三個調控參數:

max_queued_events #表示監控事件隊列

max_user_instances #表示最多監控實例數

max_user_watches #表示每個實例最多監控文件數

查看具體參數值:

[root@xuegod-63 ~]# cat /proc/sys/fs/inotify/max_queued_events

16384

[root@xuegod-63 ~]# cat /proc/sys/fs/inotify/max_user_instances

128

[root@xuegod-63 ~]# cat /proc/sys/fs/inotify/max_user_watches

8192

注:當要監控的目錄、文件數量較多或者變化較頻繁時,要加大這三個參數的值。

例如:可直接修改/etc/sysctl.conf配置文件,將管理隊列設爲32768,實例數設爲1024,監控數設爲9000000(建議大於監控目標的總文件數)

自改配置文件

[root@xuegod-63 ~]# vim /etc/sysycrl.conf #以文件最後,添加以下內容

fs.inotify.max_queued_events = 32768

fs.inotify.max_user_instances = 1024

fs.inotify.max_user_watches = 90000000

[root@xuegod-63 ~]# sysctl -p #使修改後的sysctl.conf文件生效

安裝inotify-tools-3.13.tar:將擁有inotifywait、inotifywatch輔助工具程序,從而來監控、彙總文件系統改動情況。

[root@xuegod-63 ~]# tar -zxvf inotify-tools-3.13.tar.gz #進行都文件的解壓

[[root@xuegod-63 ~]# cd inotify-tools-3.13

[root@xuegod-63 inotify-tools-3.13]# ./configure

[root@xuegod-63 inotify-tools-3.13]# make -j 4

[root@xuegod-63 inotify-tools-3.13]# make install

測試:

使用inotifywait命令監控網站目錄/var/www/html發生的變化。然後在另一個終端向/var/www/html目錄下添加文件、移動文件,查看屏幕輸出結果。

[root@xuegod63 ~]# inotifywait -h

常用參數:

-e 用來指定要監控哪些事件。

這些事件包括: create創建,move移動,delete刪除,modify修改文件內容,attrib屬性更改。

-m 表示持續監控

-r 表示遞歸整個目錄

-q 表示簡化輸出信息。

1.63上打開兩個終端

1終端上開啓監控

[root@xuegod63 ~]# inotifywait -mrq -e create,move,delete,modify /var/www/html/

#開啓的監控具有創建,移動,刪除和修改功能,監控到/var/www/html/下的數據變化‘

2終端上進行創建,移動,刪除等命令

[root@xuegod-63 ~]# echo aaa > /var/www/html/a.htal

[root@xuegod-63 ~]# mkdir /var/www/html/test

[root@xuegod-63 ~]# cp /etc/passwd /var/www/html/test/

[root@xuegod-63 ~]# rm -rf /var/www/html/test/passwd

查看1終端上的數據信息變化

[root@xuegod-63 ~]# inotifywait -mrq -e create,move,delete,modify /var/www/html/

/var/www/html/test/ CREATE passwd

/var/www/html/test/ MODIFY passwd

/var/www/html/test/ DELETE passwd

#我們可以看到,剛纔在2終端上的命令意義在2終端上一一呈現出來了,這樣就成功的監視了/var/www/html/的數據變化情況!使用inotifywait輸出的監控結果中,每行記錄中依次包括目錄、事件、文件。據此可以識別變動情況。

編寫觸發式同步腳本

第一步,

同步時不需要輸入密碼:

xuegod63發生變化後,直接將發生變化的數據同步到xuegod64,同步時不需要輸入密碼

同步祕鑰

[root@xuegod-63 ~]# ssh-keygen #生成主機1.63的公私鑰匙

[root@xuegod-63 ~]# ssh-copy-id [email protected]拷貝自己的公鑰到要登錄的服務器1.64上。

測試

[root@xuegod-63 ~]# ssh 192.168.1.64

Last login: Sun Aug 23 14:13:38 2015 from 192.168.1.63

[root@xuegod-64 ~]# exit

#已經成功無需密碼登陸遠程客戶端了

第二步:

編寫觸發式同步腳本

[root@xuegod-63 ~]# vim a.sh

#!/bin/bash

inotifywait -mrq -e create,move,delete,modify /var/www/html/ | while read a b c

do

rsync -azP --delete /var/www/html/ [email protected]:/web-back

done

給腳本添加課執行權限

[root@xuegod-63 ~]# chmod +x a.sh

清空一下/var/www/html/下的所有內容

[root@xuegod-63 ~]# rm -rf /var/www/html/*

1終端上執行腳本

[root@xuegod-63 ~]# ./a.sh

2終端上測試—拷貝文件及創建目錄

[root@xuegod-63 ~]# cp -r /boot/grub/ /var/www/html/

[root@xuegod-63 ~]# mkdir /var/www/html/test

[root@xuegod-63 ~]# mkdir /var/www/html/111

1終端上查看執行腳本

[root@xuegod-63 ~]# ./a.sh

看到

1.64上查看目錄

[root@xuegod-64 ~]# ls /web-back/

111 grub test

開機啓動監控

[root@xuegod-63 ~]# echo '/root/a.sh &' >> /etc/rc.local

優化此腳本:

[root@xuegod63 ~]# vim a.sh

#!/bin/sh

SRC=/var/www/html

[email protected]:/web-back

inotifywait -mrq -e modify,delete,create,attrib ${SRC} | while read D E F

    do

            /usr/bin/rsync -ahqzt --delete $SRC $DST

    done

[root@xuegod63 ~]# cp /root/a.sh /opt/inotify_rsync.sh

[root@xuegod63 ~]# echo '/opt/inotify_rsync.sh &' >> /etc/rc.local

實戰5:

防止網頁被篡改

修改配置文件

[root@xuegod-63 ~]# vim a.sh

#!/bin/bash

inotifywait -mrq -e create,move,delete,modify /var/www/html/ | while read a b c

do

rsync -azP --delete [email protected]:/web-back/ /var/www/html/

#rsync -azP --delete /var/www/html/ [email protected]:/web-back

done

#腳本的意義是隻要一有人修改頁面,腳本就會自動運行,網頁就會自動恢復到原來的頁面狀態,因此是修改不了網頁頁面的

測試:

[root@xuegod-63 ~]# /root/a.sh #執行這個命令

[root@xuegod-63 html]# echo aaa > a.html

查看:

[root@xuegod-63 ~]# /root/a.sh #彈出的信息

receiving incremental file list

deleting a.html

sent 17 bytes received 410 bytes 854.00 bytes/sec

total size is 255156 speedup is 597.56

receiving incremental file list

sent 14 bytes received 407 bytes 280.67 bytes/sec

total size is 255156 speedup is 606.07

receiving incremental file list

sent 14 bytes received 407 bytes 842.00 bytes/sec

total size is 255156 speedup is 606.07

#這個時候腳本就會自動監視着頁面,出現變更,就會彈出此信息和恢復到原來的頁面!

文章轉自:http://www.linuxidc.com/Linux/2017-05/143462.htm

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