1. 程式人生 > >Rsync基本操作加實時同步演練

Rsync基本操作加實時同步演練

rsync+inotify

Rsync基本操作加實時同步演練
第一、 用SSH源,就只安裝使用客戶端命令就OK了,相當於scp
例如:
rsync -avz [email protected]:/bin/* /opt/
rsync -rlvz /opt/ [email protected]:/tmp/
如果避免交互的話需要配置公鑰驗證。
ssh-keygen -t rsa
ssh-copy-id [email protected]

第二、用sync源,則需要對服務端源主機進行配置,新建並配置 rsync源服務器使其可以被同步
yum install -y rsync

vi /etc/rsyncd.conf
uid = nobody
gid = nobody

use chroot = yes
address = 192.168.80.184
port 873
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 192.168.80.0/24
[wwwroot]
path = /var/www/html
comment = Document Root of www.benet.com
read only = no
dont compress = .gz .bz2 .tgz .zip .rar .z
auth users = backuper
secrets file = /etc/rsyncd_users.db
建立虛擬用戶配置文件並設置恰當的權限
vi /etc/rsyncd_users.db
backuper:abc123
chmod 600 /etc/rsyncd_users.db
啟動程序:rsync --daemon
netstat -anpt | grep rsync
技術分享圖片
測試源主機文件的下載與上傳:
思路:源主機文件位置/var/www/html 共享名wwwroot
在文件夾html裏存放實驗數據:cp /bin/a /var/www/html
技術分享圖片
客戶端使用命令進行下載操作:
rsync -avz [email protected]::wwwroot/
./
有密碼交互,可以設置去除:
export RSYNC_PASSWORD=abc123 (永久生效則寫入/etc/ profile中)
技術分享圖片
圖1
下載成功
測試客戶機上傳文件:
思路:首先註意服務器端目錄本身以及程序的權限
技術分享圖片
只讀限制要改為no
文件位置目錄屬性:
技術分享圖片
確認權限沒問題後執行本地文件上傳操作:
rsync -avz /bin/b* [email protected]::wwwroot
技術分享圖片
圖2
上傳成功

--delete的使用
思路:源主機/var/www/html 下有B開頭文件:圖2
客戶機/srv下有A開頭文件:圖1
執行下面命令後客戶機上A開頭文件被刪除
rsync -avzH --delete [email protected]::wwwroot /srv
技術分享圖片
A開頭文件成功刪除

實驗:
配置Rsync+ inotify實時同步:
思路:源主機上(92.168.80.184)安裝inotify監控,若發生改變則將上行同步至目標主機(192.168.80.185)
編譯安裝inotify
tar xf inotify-tools-3.14.tar.gz -C /opt
cd /opt/inotify-tools-3.14/
./configure
make && make install
配合inotify觸發備份、調整內核參數
vi /etc/sysctl.conf
fs.inotify.max_queued_events = 16384 //監控隊列大小
fs.inotify.max_user_instances = 1024 //最多監控實例數
fs.inotify.max_user_watches = 1048576 //每個實例最多監控文件數
查看參數設置:sysctl –p
技術分享圖片
監控部署完成
下面通過角本完成觸發備份任務
vi /opt/inotify_rsync.sh
#!/bin/bash
INOTIFY_CMD="inotifywait –mrq -e modify,create,attrib,move,delete /var/www/html"
RSYNC_CMD="rsync -azH --delete /var/www/html/ [email protected]:/srv"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 50 ] ; then
$RSYNC_CMD
fi
done

當源主機上行同步時將與目標主機進行密碼交互,這是腳本不允許發生的
應將密碼交互去除方可不影響腳本執行
ssh-keygen -t rsa //默認全部回車
ssh-copy-id [email protected]
註意增加腳本的執行權限
執行腳本,開始監控:sh /opt/inotify_rsync.sh &

下面進行實時同步測試:
清空所有主機文件夾裏的內容,在源主機上新建、刪除等操作,然後查看目標主機相應位置是否同步
技術分享圖片
腳本運行中……

技術分享圖片

源主機已清空
技術分享圖片
目標主機也是空的
在源主機上新建文件夾test123技術分享圖片
技術分享圖片

監控端已有反饋
查看目標主機是否同步
技術分享圖片
發現已順利同步!

有關其他操作自行實驗,本次實時同步實驗成功!

Rsync基本操作加實時同步演練