分享rsync+inotify實時同步實例教程

1.rsync

與傳統的cptar備份方式相比,rsync具有安全性高、備份迅速、支持增量備份的優點,通過rsync可以解決對實時性要求不高的數據備份需求,例如定期的備份文件服務器數據到遠端服務器,對本地磁盤定期做數據鏡像等。

隨著應用系統規模不斷的擴大,對數據安全性和可靠性也提出了更高的要求,rsync在高端業務中也逐漸暴露出許多不足。首先,rsync實時同步時,需要掃描所有的文件進行比對,進行差量傳輸。如果文件數量打到了百萬甚至千萬量級,掃描所有的文件是非常耗時的,而且正在發生變化的往往是其中很少一部分,這是非常低效的方式。其次,rsync不能實時監測、同步數據。雖然它可以通過linux守護進程的方式進行出發同步,但是兩次出發動作一定會有時間差,這樣就導致了服務端和客戶端出現不一致,無法在應用故障時完全的恢復數據。基于以上原因,rsync+inotify就出現了!

2.inotify(監控)

?

inotify是一種強大的、細粒度的、異步的文件系統事件監控機制。通過inotify可以監控文件系統中的添加、刪除、修改、移動等各種細微事件,利用這個內核借口,第三方軟件就可以監控文件系統下的各種情況變化,而inotify-tools就是這樣的一個第三方軟件。

?

一、服務端配置(只需要安裝rsync

?

共享到/tmp/下:

?

1.添加虛擬用戶useradd rsync -s /sbin/nologin

?

??chown -R rsync.rsync /tmp/

?

2.配置rsyncd.conf配置文件

?

vim rsyncd.conf

?

#rsync_config_______________start

?

#rsyncd.conf start##

?

uid = rsync(用戶)

?

gid = rsync(用戶)

?

use chroot = no(防止出現安全問題)

?

max connections = 200(有多少個客戶端可以連接我這個備份服務器)

?

timeout = 300(超時,多長時間沒有動作就斷掉連接)

?

pid file = /var/run/rsyncd.pid(進程號,將進程號放在這個文件里)

?

lock file = /var/run/rsync.lock(相當于“鎖”的概念,上廁所鎖門的概念)

?

log file = /var/log/rsyncd.log(出錯了,可以查看log日志文件)

?

[tmp](模塊)

?

path = /tmp/(路徑)

?

ignore errors(忽略錯誤)

?

read only = false(只讀為假,可讀,可寫的意思)

?

list = false(不允許列表)

?

hosts allow = 10.0.0.0/24(允許的主機)

?

hosts deny = 0.0.0.0/32(拒絕的主機)

?

auth users = rsync_backup(支持虛擬用戶)

?

secrets file = /etc/rsync.password(用戶對應的密碼文件)

?

#rsync_config_______________end

?

3.建立密碼文件

?

?echo “rsync_backup:123456”?>/etc/rsync.password

?

凡是密碼文件全部600權限 chmod 600 /etc/rsync.password

?

4.rsync –daemon daemon模式啟動

?

5.rsync –daemon加入/etc/rc.local

?

??echo “/usr/bin/rsync –daemom”?>>/etc/rc.local

?

?

?

二、客戶端配置

?

安裝rsyncinotify

?

1.安裝rsyncyum安裝即可)

?

2.建立密碼認證文件

?

echo “123456”?>/etc/rsync.password 只需要密碼

?

設置權限600 chmod 600 /etc/rsync.password

?

3.安裝inotify

?

??cd /home/cai/tools/

?

wget

?

?

?

???54 ?tar xf inotify-tools-3.14.tar.gz

?

???55 ?ls

?

???56 ?cd inotify-tools-3.14

?

???57 ?./configure –prefix=/usr/local/inotify-tools-3.14

?

???58 ?make && make install

?

???59 ?yum install -y gcc

?

???60 ?./configure –prefix=/usr/local/inotify-tools-3.14

?

???61 ?make && make install

?

???62 ?cd /usr/local/inotify-tools-3.14/

?

???63 ?ls

?

???64 ?ln -s /usr/local/inotify-tools-3.14/ /usr/local/inotify

?

?

?

4.腳本都是放在/server/scripts

?

?vim /server/scripts/rsync.sh

?

#!/bin/sh

?

host=192.168.76.129

?

src=/tmp/

?

des=tmp

?

user=rsync_backup

?

/usr/local/inotify/bin/inotifywait -mrq –timefmt ‘%d%m%y %H:%M’ –format ‘%T %w%f%e’ -e modify,delete,create,attrib $src |

?

while read files

?

do

?

/usr/bin/rsync -avz –delete $src $user@$host::$des –password-file=/etc/rsync.password

?

echo “${files} was rsynced” >>/var/log/rsyncd.log 2>&1

?

done

?

exit o

?

~ ??????????

?

并給予764權限

?

測試腳本:sh -x /server/scripts/rsync.sh

?

運行腳本:sh /server/scripts/rsync.sh &

?

rsync.sh腳本放入到開機啟動項中:echo “/tmp/rsync.sh”?>>/etc/rc.local

?

? 版權聲明
THE END
喜歡就支持一下吧
點贊8 分享