rsync是linux系統下的數據鏡像備份工具。使用快速增量備份工具Remote Sync能夠遠程同步,支持本地複製,或者與其餘SSH、rsync主機同步。html
inotify 是一個 Linux特性,它監控文件系統操做,好比讀取、寫入和建立。Inotify 反應靈敏,用法很是簡單,而且比 cron 任務的繁忙輪詢高效得多。學習如何將 inotify 集成到您的應用程序中,並發現一組可用來進一步自動化系統治理的命令行工具。
案例環境以下:linux
角色 | IP地址 | 安裝軟件包 |
---|---|---|
rsync同步源 | 192.168.174.141 | rsync、 |
rsync發起端 | 192.168.174.165 | rsync、inotify-tools |
vim /etc/rsyncd.conf uid = nobody gid = nobody use chroot = yes //是否禁錮在源目錄,yes爲是 address = 192.168.174.141 //監聽地址 port 873 //監聽端口 log file = /var/log/rsyncd.log //日誌文件路徑 pid file = /var/run/rsyncd.pid //進程ID文件路徑 hosts allow = 192.168.174.0/24 //容許訪問的客戶機的地址段 [wwwroot] //共享模塊名稱 path = /var/www/html //源目錄的實際地址 comment = www.kgc.cn read only = no //是否爲只讀 dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 //同步時 再也不壓縮的文件類型 auth users = backuper //受權帳戶 secrets file = /etc/rsyncd_users.db //存放帳戶信息的數據文件
vim /etc/rsyncd_users.db backuper:abc123 //backuper爲用戶名 abc123爲密碼
chmod 600 /etc/rsyncd_users.db //更改備份帳戶的讀取權限,提升安全性 mkdir -p /var/www/html chmod 777 /var/www/html //更改源目錄的讀寫權限 chown -R nobody:nobody /var/www/html //更改源目錄的所屬主及所屬組
rsync --daemon netstat -natp | grep rsync tcp 0 0 192.168.174.141:873 0.0.0.0:* LISTEN 4875/rsync
將對方源目錄的文件同步到發起端的/opt目錄下,方法有三種:c++
(1)rsync -avz 備份用戶名@同步源IP地址::共享模塊名 /發起端目錄 password:備份用戶密碼vim
rsync -avz backuper@192.168.174.141::wwwroot /opt/ password:abc123
(2) rsync -avz rsync://備份用戶名@共享模塊名 /發起端目錄 password:備份密碼安全
rsync -avz rsync://backuper@192.168.174.141/wwwroot /opt/ password:abc123
(3)免密碼交互bash
vim /etc/server.pass //建立server.pass文件備份用戶保存密碼 abc123
chmod 600 /etc/server.pass //更改密碼文件讀取權限,提升安全性
rsync -az --delete --password-file=/etc/server.pass backuper@192.168.174.141::wwwroot /opt
測試是否同步
在同步源服務器上的共享目錄下建立aaa.html
服務器
vim /etc/sysctl.conf //在後面加入以下參數 fs.inotify.max_queued_events = 16384 監控事件隊列(16384) fs.inotify.max_user_instances = 1024 最多監控實例數(1024) fs.inotify.max_user_watches = 1048576 每一個實例最多監控文件數(1048576)
yum install gcc gcc-c++ make -y cd /opt/inofiry-tools-3.14 ./configure make && make install
從新開啓一個終端併發
inotifywait -mrq -e modify,create,move,delete /var/www/html
在/var/www/html目錄下建立一個a.txt文件,切換終端查看命令輸出的狀況
tcp
用來檢測本機/var/www/html目錄的變更狀況,一旦有更新觸發rsync同步操做,則上傳至服務器192.168.174.141的/var/www/htmlide
vim /opt/inotify.sh #!/bin/bash INOTIFY_CMD="inotifywait -mrq -e modify,create,attrib,move,delete /var/www/html/" RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ backuper@192.168.174.141::wwwroot/" $INOTIFY_CMD | while read DIRECTORY EVENT FILE do if [ $(pgrep rsync | wc -l) -le 0 ] ; then $RSYNC_CMD fi done
在發起端/var/www/html目錄下建立test.txt文件
切換到同步源服務器下/var/www/html下查看
將發起端的test.txt文件刪除
切換到同步源服務器,此時源服務器下的test.txt文件也被刪除,說明同步成功。