雙向實時遠程同步文件(inotify+rsync與nfs)

項目中遇到兩臺機子上文件需要實時同步的情況,嘗試了下面兩種方法:
項目要求:A機(190)與B機(217)要求一個文件夾內容同對方一致,A機與B機都有可能單獨接收到文件從而同步到對方。
方法一、 使用rsync-server與inotify配合同步文件
1、rsync-server配置(217)
# vi /etc/xinetd.d/rsync 
# default: off
#       allows crc checksumming etc.
service rsync
{
        disable = no
        socket_type     = stream
        wait            = no
        user            = root
        server          = /usr/bin/rsync
        server_args     = --daemon
        log_on_failure  += USERID
}
2、指定文件位置
# vi /etc/rsyncd.conf 
uid = root
gid = root
use chroot = yes
max connections = 4
strict modes = yes
syslog facility = local5
port = 873
[backup]
path = /home/rsync/test/  ##要同步的文件夾
comment = This is a test
ignore errors
read only = no   ##寫權限
list = yes
auth users = rsync
secrets file = /etc/rsync.pas   ##驗證文件,對方機子也要存在這個文件
hosts allow = 192.168.1.190 ##客戶端IP
3、創建rsync.pas
# vi /etc/rsync.pas
sync:test
4、客戶端同步腳本(190)
#vi inotify_rsync.sh
#!/bin/bash
SRC=/home/rsync/test/
[email protected]::backup
/usr/bin/inotifywait -mrq -e modify,delete,create,attrib ${SRC} | while read D E F
do
/usr/bin/rsync -ahqzt --progress --delete --password-file=/etc/rsync.pas $SRC $DST
done
5、設置腳本開機自啓動
# cat "/root/inotify_rsync.sh &" >> /etc/rc.local
6、雙向同步的實現及存在問題 以上只是實現A機(190)同步到B機(217)的操作,把配置改一下在A機(190)上建立rsync服務器,即可實現雙向同步,但不能執行刪除操作,因爲它們並沒有方法判斷以誰的操作爲主,會造成新建文件被刪除。

方法二、使用NFS共享服務器實現文件同步

1、配置NFS
#service portmap start
#service nfs start
#vi /etc/exports 
/home/rsync/test *(rw,sync,no_root_squash) ##rw:可讀寫的權限;sync:資料同步寫入存儲器中; no_root_squash: 登入到NFS主機的用戶如果是ROOT用戶,他就用有ROOT的權限
# exportfs -rv  ##重新將設定加載
2、加載NFS共享目錄 加載之前先用SSH連接一下兩臺機子,這樣就不用配驗證了,再寫入到/etc/fstab文件裏就OK了。
mount -t nfs 192.168.1.190:/home/rsync/test /home/rsync/test
寫在最後:方法一文件同時存在兩臺機子上,具有實時性,安全性,但只適合不執行刪除的文件的環境;方法二文件只存在於NFS服務器上,如果配合rsync服務器定時備份到另一地方,出現故障時可以人工恢復,也是不錯的選擇。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章