Rsync下行同步+inotify实时同步介绍和部署
生活随笔
收集整理的這篇文章主要介紹了
Rsync下行同步+inotify实时同步介绍和部署
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Rsync下行同步+inotify實時同步介紹和部署
- 一、Rsync
- 1、Rsync同步源
- 2、Rsync服務器
- 3、同步方式
- 二、配置rsync源
- 三、rsync命令
- 四、配置源的兩種表示方法
- 1、免交互格式
- 五、inotify簡介
- 1、調整inotify內核參數(優化)
- 2、使用inotify-tools輔助工具
- 3、編寫同步腳本
- 六、配置rsync下行同步
- 1、配置rsync源服務器
- 2、發起端配置
- 七、rsync+inotify實時同步
- 1、rsync源服務器
- 2、==發起端(192.168.172.20)==
- 3、驗證
一、Rsync
- 支持本地復制,或者與其他SSH,rsync主機同步
1、Rsync同步源
- 指備份操作的遠程服務器,也稱為備份源
例:
A服務器同步B服務器的數據,B服務器就是備份源
反過來,B服務器同步A服務器的數據,那么A服務器就是備份源
2、Rsync服務器
- 1.Rsync是一款開源的、快速的、多功能的、可實現全量及增量的本地或遠程數據同步備份的優秀工具。并且可以不進行改變原有數據的屬性信息,實現數據的備份遷移特性。
- 2.Rsync軟件適用于unix/linux/windows等多種操作系統平臺。
- 3.Rsync是一個快速和非常通用的文件復制工具。它能本地復制,遠程復制,或者遠程守護進程方式復制。
它提供了大量的參數來
控制其行為的各個方面,并且允許非常靈活的方式來實現文件的傳輸復制。 - 4.以其delta-transfer算法聞名。rsync監聽端口:873 rsync運行模式:c/s
3、同步方式
- 全量備份
所有數據全部傳送
把原來的文件和新的文件一起統一傳送全量復制,效率低 - 增量備份
在傳輸數據之前通過一些算法通過你有的數據和我有的數據進行對比,把不一樣的數據通過網絡傳輸增量復制,效率較高
二、配置rsync源
1、基本思路
- 建立rsyncd.conf配置文件、獨立的賬號文件
- 啟用rsync的 --daemon模式
2、配置文件rsyncd.conf
- 認證配置auth users、secrets file,不加則為匿名
3、獨立的賬號文件
- 用戶名:密碼
- 每行一個用戶記錄
- 獨立的賬號數據,不依賴系統賬號
4、啟用rsync服務
- 通過 --daemon獨自提供服務,rsync – daemon
- 執行kill $(cat /var/run/rsyncd.pid)關閉服務
三、rsync命令
#命令的用法 rsync [選項] 原始位置 目標位置#----------常用選項-------------------------- -r:遞歸模式,包含目錄及子目錄中的所有文件。 -l:對于符號鏈接文件仍然復制為符號鏈接文件。 -v:顯示同步過程的詳細(verbose)信息。 -z:在傳輸文件時進行壓縮(compress)。 -a:歸檔模式,保留文件的權限、屬性等信息,等同于組合選項“-rlptgoD”。 -p:保留文件的權限標記。 -t:保留文件的時間標記。 -g:保留文件的屬組標記(僅超級用戶使用)。 -o:保留文件的屬主標記(僅超級用戶使用)。 -H:保留硬連接文件。 -A:保留 ACL 屬性信息。 -D:保留設備文件及其他特殊文件。 --delete:刪除目標位置有而原始位置沒有的文件,即刪除差異文件,保留一致性。 --checksum:根據校驗和(而不是文件大小、修改時間)來決定是否跳過文件。 --password-file=file:從file中得到密碼,用于免交互處理,file文件的權限要是600四、配置源的兩種表示方法
格式一:
用戶名@主機地址::共享模塊名格式二:
rsync://用戶名@主機地址/共享模塊名1、免交互格式
echo "密碼" > /etc/密碼文件 chmod 600 /etc/密碼文件#設置周期性任務 crontab -e 30 22 * * * /usr/bin/rsync -az --delete --password-file=/etc/密碼文件 backuper@192.168.172.10::wwwroot /optsystemctl restart crond systemctl enable crond五、inotify簡介
- 使用inotify通知接口,可以用來監控文件系統的各種變化情況,如文件存取、刪除、移動、修改等。利用這一機制,可以非常方便地實現文件異動告警、增量備份,并針對目錄或文件的變化及時作出響應。
- 將inotify機制與rsync工具相結合,可以實現觸發式備份(實時同步),即只要原始位置的文檔發生變化操作;否則處于靜默等待狀態。
- 因為inotify 通知機制由 Linux 內核提供,因此主要做本機監控,在觸發式備份中應用時更適合上行同步。
1、調整inotify內核參數(優化)
- /etc/sysctl.conf(內核參數配置文件),需要配置
- max_queue_events :監控事件隊列大小
- max_user_instances :最多監控實例
- max_user_watches :每個實例最多監控文件數
- 配置的監控數量應該大于監控目標的總文件數
2、使用inotify-tools輔助工具
- inotifywait:用于持續監控,實時輸出結果
- 可監控modify(修改)、create(創建)、move(移動)、delete(刪除)、attrib(屬性更改)等各種事件,一有變動立即輸出結果。
- inotifywatch:用于短期監控,任務完成后再輸出結果
- 可用來收集文件系統變動情況,并在運行結束后輸出匯總的變化情況。
3、編寫同步腳本
編寫思路:
(1)先設置兩個變量:監控和執行備份
(2)使用while 、read持續獲取監控結果
(3)根據結果判斷,執行不同的操作
六、配置rsync下行同步
下行同步:將master服務器數據備份到slave服務器
inotify-tools-3.14.tar.gz
環境配置
| 源端 | CentOS7 | 192.168.172.10 | rsync |
| 發送端 | CentOS7 | 192.168.172.20 | rsync / inotify-tools-3.14.tar.gz |
1、配置rsync源服務器
192.168.172.10
(1)關防火墻、安裝相應的軟件
(2)建立/etc/rsyncd.conf 配置文件
vim /etc/rsyncd.conf uid = root gid = root use chroot = yes address = 192.168.172.10 port 873 log file = /var/log/rsyncd.log pid file = /var/run/rsyncd.pid hosts allow = 192.168.172.0/24 [wwwroot] path = /var/www/html comment = Document Root of www.test.com read only = yes dont comperss = *.gz *.bz2 *.tgz *.zip *.rar *.z auth users = backuper secrets file = /etc/rsyncd_users.db #---------配置解釋---------------------------------------------- uid = root gid = root use chroot = yes #禁錮在源目錄 address = 192.168.172.10 #監聽地址,監聽本機地址 port 873 #監聽端口 tcp/udp 873,可通過cat /etc/services | grep rsync查看 log file = /var/log/rsyncd.log #日志文件位置 pid file = /var/run/rsyncd.pid #存放進程 ID 的文件位置 hosts allow = 192.168.172.0/24 #允許同步的客戶機網段 [wwwroot] #共享模塊名稱 path = /var/www/html #源目錄的實際路徑(同步的目錄) comment = Document Root of www.test.com read only = yes #是否為只讀 dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z #同步時不再壓縮的文件類型 auth users = backuper #授權賬戶,多個賬號以空格分隔 secrets file = /etc/rsyncd_users.db #存放賬戶信息的數據文件 vim /etc/rsyncd_users.db backuper:35123512chmod 600 /etc/rsyncd_users.dbmkdir -p /var/www/html chmod +r /var/www/html/rsync --daemon netstat -natp | grep rsynccd /var/www/html touch 1.html 2.html ls2、發起端配置
192.168.172.20
systemctl stop firewalld.service setenforce 0yum -y install rsynccd /opt mkdir abc chmod 777 abc vim /etc/server.pass 35123512chmod 600 /etc/server.pass rsync -az --delete --password-file=/etc/server.pass backuper@192.168.172.10::wwwroot /opt/abcls abc
- 企業中不可能手動執行,一般都要使用周期性任務
七、rsync+inotify實時同步
1、rsync源服務器
192.168.172.10
- 修改rsync源服務器配置文件
2、發起端(192.168.172.20)
(1)調整 inotify 內核參數
- max_queue_events(監控事件隊列,默認值為16384)
- max_user_instances(最多監控實例數,默認值為128)
- max_user_watches(每個實例最多監控文件數,默認值為8192)
- 當要監控的目錄、文件數量較多或者變化較頻繁時,建議加大這三個參數的值。
(2)安裝 inotify-tools
yum -y install gcc gcc-c++ make#放入安裝包 tar zxvf inotify-tools-3.14.tar.gz -C /optcd /opt/inotify-tools-3.14/ ./configure && make && make install(3)編寫觸發式同步腳本
vim /opt/inotify_rsync.sh #!/bin/bash INOTIFY_CMD="inotifywait -mrq -e create,delete,move,modify,attrib /opt/abc/" RSYNC_CMD="rsync -azH --delete --password-file=/etc/server.pass /opt/abc/ backuper@192.168.172.10::wwwroot"$INOTIFY_CMD | while read DIRECTORY EVENT FILE doif [ $(pgrep rsync | wc -l) -le 0 ] ; then$RSYNC_CMDfi donecd /opt/ chmod +x inotify_rsync.sh . /opt/inotify_rsync.sh &#加入開機自動執行 chmod +x /etc/rc.d/rc.local echo '/opt/inotify_rsync.sh' >> /etc/rc.d/rc.local3、驗證
192.168.172.20
192.168.172.10
總結
以上是生活随笔為你收集整理的Rsync下行同步+inotify实时同步介绍和部署的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 电脑卡顿?告别烦恼,芝奇内存秒速提速
- 下一篇: 如何构建GFS分布式存储平台?理论+实操