inotify和rsync實現實時同步

inotify和rsync實現實時同步
首先先用兩臺主機實現rsyncc同步
服務端:
[root@centos7 data 14:20:35]#echo "rsyncuser:123" > /etc/rsync.pass 生成驗證文件
[root@centos7 data 14:21:13]#chmod 600 /etc/rsync.pass
[root@centos7 data 14:21:19]#mkdir /backup 準備目錄
[root@centos7 data 15:18:52]#vim /etc/rsyncd.conf 配置/etc/rsyncd.conf

uid = root
gid = root
use chroot = no
max connections = 0
ignore errors
exclude = lost+found/
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
lock file = /var/run/rsyncd.lock
reverse lookup = no
hosts allow = 192.168.0.0/24
[backup]
path = /backup/
comment = backup
read only = no
auth users = rsyncuser
secrets file = /etc/rsync.pass
comment = ftp export area
[root@centos7 ~ 14:45:22]#systemctl start rsyncd 開啓服務,監聽873端口

客戶端:
[root@centos6 ~ 12:02:50]#echo "123" > /etc/rsync.pass 生成密碼文件
[root@centos6 ~ 15:45:39]#chmod 600 /etc/rsync.pass
[root@centos6 ~ 15:45:47]#rsync -avz --password-file=/etc/rsync.pass /data/
[email protected]::backup 同步數據
sending incremental file list
./
ERROR: daemon refused to receive directory "lost+found"
*** Skipping any contents from this failed directory ***
data/

sent 72 bytes received 16 bytes 176.00 bytes/sec
total size is 0 speedup is 0.00
rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1039) [sender=3.0.6]

結合inotify+rsync實現同步:
[root@centos6 ~ 16:08:40]#yum -y install epel-release
[root@centos6 ~ 16:08:57]#yum -y install inotify-tools
[root@centos6 ~ 16:11:33]#vim inotify_rsync.sh

#!/bin/bash
SRC='/data/'
DEST='[email protected]::backup'
inotifywait -mrq --timefmt '%Y-%m-%d %H:%M' --format '%T %w %f' -e create,delete,moved_to,close_write,attrib ${SRC} |while read DATE TIME DIR FILE;do
FILEPATH=${DIR}${FILE}
rsync -az --delete --password-file=/etc/rsync.pass $SRC $DEST && echo "At ${TIME} on ${DATE}, file $FILEPATH was backuped up via rsync" >> /var/log/changelist.log
#注意:因爲ext系統文件系統有lost+found文件夾,所有rsync會同步成功,但命令的執行結果是失敗的,所有不會寫日誌至/var/log/changelist.log中,要想成功,在ext系統文件系統中把&&換成||即可
done

[root@centos6 ~ 16:13:53]#./inotify_rsync.sh
inotify和rsync實現實時同步
在客戶端創建文件
inotify和rsync實現實時同步
服務端幾乎瞬間就能夠同步
inotify和rsync實現實時同步

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