準備兩臺主機服務器 shell
服務端:host1 192.168.1.109 客戶端:host2 192.168.1.107
~]# vim /etc/rsyncd.conf uid=root gid=root use chroot=no max connections=0 #不限制最大鏈接數 exclude = lost+found pid file = /var/run/rsyncd.pid log file = /var/log/rsyncd.log lock file =/var/run/rsyncd.lock reverse lookup = no hosts allow = 192.168.1.107/24 #容許鏈接的主機 ignore errors [backup] path = /backup/ #備份的到路徑 comment = backup read only= no auth users = kobe #客戶端同步數據到服務端時的受權帳戶 secrets file=/etc/rsync.pass #將受權帳戶與密碼存放到此文件中 ... ... ...
建立用於備份的文件目錄 ~]# mkdir /backup/ 建立受權用戶 ~]# useradd -r -s /sbin/nologin kobe 將受權的用戶名及密碼存入文件,爲了安全將此文件設置600權限 ~]# echo 'kobe:123456' > /etc/rsyncd.pass ~]# chmod 600 /etc/rsyncd.pass
~]# systemctl restart rsyncd.service
~]# yum install inotify-tools -y 導入受權用戶密碼 ~]# echo 123456 > /etc/rsyncd.pass ~]# chmod 600 /etc/rsynd.pass
~]# vim /data/shell.sh/rsync_inotify.sh #!/bin/bash SRC='/data/shell.sh/' DEST='kobe@192.168.1.109::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 done :wq #保存退出 運行腳本文件實時同步開始 ..... ~]# rsync_inotify.sh
監控backup文件夾,每秒鐘刷新一次: ~]# watch -n 1 ls -l /backup
~]# ls -l /data/shell.sh
能夠看出實現數據實時同步,在客戶端修改數據時會自動將修改數據同步到服務端 vim
顯示客戶端已備份到服務端的文件及備份的時間 ~]# cat /var/log/changelist.log