Remote Sync,遠程同步
支持本地複製,或者與其餘SSH、rsync主機同步
官方網站:http://rsync.samba.orghtml
指備份操做的遠程服務器,也稱爲備份源
創建rsync.conf配置文件,獨立的帳號文件 啓用rsync的--daemon模式
用戶backuper,容許下行同步 操做的目錄爲/var/www/html
需手動創建,語法相似於Samba配置 認證配置auth users,secrets file,不加則爲匿名
採用「用戶名:密碼」的記錄格式,每行一個用戶記錄 獨立的帳號數據,不依賴於系統帳號
經過--daemon獨自提供服務 執行kill $(cat /var/run/rsync.pid)關閉rsync服務
rsync [選項] 原始位置 目標位置
-a:歸檔模式,遞歸併保留對象屬性,等用於-rlptgoD -v:顯示同步過程的詳細信息 -z:在傳輸文件時進行壓縮 -H:保留硬鏈接文件 -A:保留ACL屬性信息 --delete:刪除目標位置有而原始位置沒有的文件 --checksum:根據對象的校驗和來決定是否跳過文件
格式1:用戶名@主機地址::共享模塊名 格式2:rsync://用戶名@主機地址/共享模塊名
執行備份的時間固定,延遲明顯,實時性差 當同步源長期不變化時,密集的按期任務是沒必要要的
一旦同步源出現變化,當即啓動備份 只要同步源無變化,則不執行備份
Inotify 是一個 Linux特性,它監控文件系統操做,好比讀取、寫入和建立。 Inotify 反應靈敏,用法很是簡單,而且比 cron 任務的繁忙輪詢高效得多。 能夠監控文件系統的變化狀況,並做出通知響應; 輔助軟件:inotify-tools
rsyncd:192.168.52.134 client:192.168.52.148
[root@rsyncd ~]# rpm -q rsync ##檢查是否安裝rsync,沒有用yum安裝 rsync-3.0.9-18.el7.x86_64 [root@rsyncd ~]# vim /etc/rsyncd.conf uid = nobody ##匿名用戶 gid = nobody use chroot = yes ##禁錮家目錄 pid file = /var/run/rsyncd.pid ##pid文件 address = 192.168.13.128 ##監聽地址 port = 873 ##監聽端口號 log file = /var/log/rsyncd.log ##日誌文件路徑 hosts allow = 192.168.13.0/24 ##容許地址段訪問 dont compress = *.gz *.tgz *.zip *.z *.Z *.rpm *.deb *.bz2 ##不須要壓縮的類型 [wwwroot] ##共享模塊名 path = /var/www/html ##路徑 comment = www.kgc.com ##定義名稱 read only = yes ##開啓只讀 auth users = backuper ##身份驗證用戶名 secrets file = /etc/rsyncd_users.db ##密碼文件 [root@rsyncd ~]# vim /etc/rsyncd_users.db ##建立密碼文件 backuper:abc123 ##用戶名:密碼 [root@rsyncd ~]# chmod 600 /etc/rsyncd_users.db ##給root用戶讀寫權限 [root@rsyncd ~]# rsync --daemon ##開啓rsync服務 [root@rsyncd ~]# netstat -ntap | grep rsync ##查看端口 tcp 0 0 192.168.52.134:873 0.0.0.0:* LISTEN 15471/rsync [root@rsyncd ~]# systemctl stop firewalld.service ##關閉防火牆 [root@rsyncd ~]# setenforce 0 [root@rsyncd ~]# yum install httpd -y ##安裝httpd服務 [root@rsyncd ~]# cd /var/www/html/ [root@rsyncd html]# echo "this is test web" > index.html ##建立網頁信息 [root@rsyncd html]# cd ../ [root@rsyncd www]# chmod 777 html/ ##給最大權限,方便任意用戶操做 [root@rsyncd www]# ll ##查看權限 總用量 0 drwxr-xr-x. 2 root root 6 8月 8 19:42 cgi-bin drwxrwxrwx. 2 root root 24 12月 13 15:11 html [root@rsyncd www]#
[root@client ~]# rpm -q rsync ##檢查是否安裝rsync服務 rsync-3.0.9-18.el7.x86_64 [root@client ~]# systemctl stop firewalld.service ##關閉防火牆 [root@client ~]# setenforce 0 [root@client ~]# yum install httpd -y ##安裝httpd服務 [root@client ~]# cd /var/www/ [root@client www]# chmod 777 html/ ##給最大權限 [root@client www]# ls -l ##查看去哪先 總用量 0 drwxr-xr-x. 2 root root 6 8月 8 19:42 cgi-bin drwxrwxrwx. 2 root root 6 8月 8 19:42 html ##同步格式一: [root@client www]# rsync -avz backuper@192.168.52.134::wwwroot /var/www/html/ ##拉取共享模塊 Password: ##輸入密碼 ./ index.html sent 83 bytes received 172 bytes 46.36 bytes/sec total size is 17 speedup is 0.07 [root@client www]# ls cgi-bin html [root@client www]# cd html/ [root@client html]# ls index.html [root@client html]# cat index.html ##查看同步狀況 this is test web [root@client html]# [root@client www]# cat html/index.html this is test web ##同步格式二: [root@client html]# rm -rf index.html ##刪除同步過來的文件 [root@client html]# ls [root@client html]# rsync -avz rsync://backuper@192.168.52.134/wwwroot /var/www/html/ ##拉取共享模塊 Password: ##輸入密碼 receiving incremental file list ./ index.html sent 83 bytes received 172 bytes 72.86 bytes/sec total size is 17 speedup is 0.07 [root@client html]# ls index.html [root@client html]# cat index.html ##查看同步狀況 this is test web [root@client html]# ##免交互同步: [root@client html]# rm -rf index.html ##刪除同步過來的文件 [root@client html]# touch abc.html ##在目錄下建立一個abc.html文件 [root@client html]# ls abc.html [root@client html]# [root@client html]# vim /etc/server.pass ##建立本地的密碼文件 abc123 [root@client html]# chmod 600 /etc/server.pass ##給權限 [root@client html]# [root@client html]# rsync -avz --delete --password-file=/etc/server.pass backuper@192.168.52.134::wwwroot /var/www/html/ ##指定本地密碼文件,刪除目標位置有而原始位置沒有的文件,實現免交互 receiving incremental file list deleting abc.html ./ index.html sent 83 bytes received 172 bytes 170.00 bytes/sec total size is 17 speedup is 0.07 [root@client html]# ls ##能夠看到,abc.html被刪除了,由於加了--delete選項 index.html [root@client html]# cat index.html this is test web [root@client html]#
[root@client html]# cd ../ [root@client www]# vim /etc/sysctl.conf ##修改內核參數文件 fs.inotify.max_queued_events = 16384 ##隊列 fs.inotify.max_user_instances = 1024 ##每一個隊列中的實例數 fs.inotify.max_user_watches = 1048576 ##每一個實例中的文件數 [root@client www]# sysctl -p ##加載 fs.inotify.max_queued_events = 16384 fs.inotify.max_user_instances = 1024 fs.inotify.max_user_watches = 1048576 [root@client www]# mount.cifs //192.168.100.100/tools /mnt/tools/ ##掛載 Password for root@//192.168.100.100/tools: [root@client www]# cd /mnt/tools/inotify/ [root@client inotify]# tar xf inotify-tools-3.14.tar.gz -C /opt/ ##解壓inotify到/opt下 [root@client inotify]# cd /opt/inotify-tools-3.14/ [root@client inotify-tools-3.14]# yum install gcc gcc-c++ make -y ##安裝環境必要的組件 [root@client inotify-tools-3.14]# ./configure ##配置 [root@client inotify-tools-3.14]# make && make install ##編譯安裝 [root@client inotify-tools-3.14]# inotifywait -mrq -e modify,create,move,delete /var/www/html/ ##進行監控 ##重啓開啓一個客戶機的終端 [root@client ~]# cd /var/www/html/ [root@client html]# ls index.html [root@client html]# touch abc [root@client html]# rm -rf abc [root@client html]# ##在監控上的客戶機上查看 /var/www/html/ CREATE abc /var/www/html/ DELETE abc
[root@client inotify-tools-3.14]# cd /opt/ [root@client opt]# vim inotify.sh #!/bin/bash INOTIFY_CMD="inotifywait -mrq -e modify,create,move,delete /var/www/html/" RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /var/www/html/ backuper@192.168.52.134::wwwroot/" $INOTIFY_CMD | while read DIRECTORY EVENT FILE do if [ $(pgrep rsync | wc -l) -le 0 ]; then $RSYNC_CMD fi done [root@client opt]# chmod +x inotify.sh ##給執行權限 ##確保服務端和客戶端的權限都爲最大
[root@rsyncd www]# vim /etc/rsyncd.conf read only = no ##關閉只讀 [root@rsyncd www]# pkill -9 rsync ##關閉 [root@rsyncd www]# netstat -ntap | grep rsync [root@rsyncd www]# [root@rsyncd www]# rm -rf /var/run/rsyncd.pid ##刪除pid文件 [root@rsyncd www]# rsync --daemon ##開啓rsync服務 [root@rsyncd www]# netstat -ntap | grep rsync tcp 0 0 192.168.52.134:873 0.0.0.0:* LISTEN 50571/rsync [root@rsyncd www]#
##客戶端執行腳本 [root@client opt]# ./inotify.sh ##進入監控狀態 ##從新開啓一個客戶機終端 [root@client ~]# cd /var/www/html/ [root@client html]# ls index.html [root@client html]# echo "this is test" > test.txt ##添加文本 ##查看監控服務信息 [root@client opt]# ./inotify.sh rsync: failed to set times on "/." (in wwwroot): Operation not permitted (1) rsync error: some files/attrs were not transferred (see previous errors) (code 23) at main.c(1052) [sender=3.0.9] ##在rsync服務器上查看 [root@rsyncd www]# cd html/ [root@rsyncd html]# ls index.html test.txt ##同步完成 ##在新開的客戶機終端 [root@client html]# rm -rf test.txt [root@client html]# ls index.html [root@client html]# ##在rsync服務器上查看 [root@rsyncd html]# ls index.html [root@rsyncd html]# ##刪除也是同步的