rsync+inotify實時同步
遠端同步
rsync同步簡介
一款快速增量備份工具
- Remote Sync,遠端同步
- 支援本地複製,或者與其他SSH、rsync主機同步
- 官方網站: http://rsync.samba.org
配置rsync備份源
rsync同步源
- 指備份操作的遠端伺服器,也稱為備份源
基本思路
- 建立rsyncd.conf配置檔案、獨立的賬號檔案
- 啟用rsync的–daemon模式
應用示例
- 使用者backuper,允許下行同步
- 操作的目錄為/var/www/html/
配置檔案rsyncd.conf
- 需手動建立,語法類似於Samba配置
- 認證配置auth users、secrets file,不加則為匿名
rsync賬號檔案
- 採用“使用者名稱:密碼”的記錄格式,每行一個使用者記錄
- 獨立的賬號資料,不依賴於系統賬號
啟用rsync服務
- 通過–daemon獨自提供服務(執行kill $(cat /var/run/rsyncd.pid)關閉rsync服務)
使用rsync備份工具
rsync命令基本用法
- rsync 選項 原始位置 目標位置
常用選項
-a:歸檔模式,遞迴併保留物件屬性,等同於-rlptgoD
-v:顯示同步過程的詳細(verbose)資訊
-z:在傳輸檔案時進行壓縮(compress)
-H:保留硬連線檔案
-A:保留ACL屬性資訊
–delete:刪除目標位置有而原始位置沒有的檔案
–checksum:根據物件的校驗和來決定是否跳過檔案
配置源的兩種表示方法
格式1:使用者名稱@主機地址::共享模組名
格式2:rsync://使用者名稱@主機地址/共享模組名
[root@localhost ~]# rsync -avz
backuper@20.0.0.36::wwwroot /root
[root@localhost ~]# rsync -avz
rsync://backuper@20.0.0.36/wwwroot /root
rsync同步操作示例
- 下行rsync源:wwwroot共享 -> /myweb
[root@localhost ~]# mkdir /myweb
[root@localhost ~]# rsync -avzH --delete
backuper@20.0.0.36::wwwroot /myweb
rsync指令碼的互動處理
rsync源的免互動處理
- 使用 --password-file= 密碼檔案
rsync -az --delete --password-file=/etc/server.pass backuper@192.168.100.22::wwwroot /opt/
rsync實時同步
定期同步的不足
- 執行備份的時間固定,延遲明顯、實時性差
- 當同步源長期不變化時,密集的定期任務是不必要的
實時同步的優點
- —旦同步源出現變化,立即啟動備份
- 只要同步源無變化,則不執行備份
關於inotify
Linux核心的inotify機制
- 從版本2.6.13開始提供
- 可以監控檔案系統的變動情況,並做出通知響應
- 輔助軟體: inotify-tools
rsync+inotify實時同步
調整inotify核心引數
[root@localhost ~]# vi /etc/sysctl.conf
· max_queue_events:監控事件佇列大小
· max_user_instances:最多監控例項數
· max_user watches:每個例項最多監控檔案數(監控數應大於監控目標的總檔案)
[root@localhost ~]# sysctl -p
安裝inotify-tools輔助工具
- inotifywait:用於持續監控,實時輸出結果
- inotifywatch:用於短期監控,任務完成後再出結果
[root@localhost ~]# inotifywait -mrq -e modify,create,move,delete /var/www/html
-m, 持續進行監控
-r,遞迴監控所有子物件
-q,簡化輸出資訊
-e, 指定要監控哪些事件型別
通過inotifywait觸發rsync同步操作
- 使用while、read持續獲取監控結果
- 根據結果可以作進—步判斷,決定執行何種操作
[root@localhost ~]# 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 --password-file=/etc/server.pass /var/www/html"
rput@192.168.4.200:/var/www/html"
$INOTIFY_CMD | while read DIRECTORY EVENT FILE
do
if [ $(pgrep rsync | wc -l) -le 0 ] ; then
$RSYNC_CMD
fi
done
相關文章
- rsync+inotify資料的實時同步
- rsync+inotify實時同步環境部署記錄
- rsync+inotify實現實時同步(小業務場景解決方案)
- 小白都會的rsync遠端同步原理及-------(定期同步與rsync+inotify實時同步)實驗
- Centos6安裝配置rsync+inotify實時單向同步CentOS
- rsync實時同步
- 實時同步服務
- Oracle實時同步技術Oracle
- lsyncd 實時同步搭建指南
- sersync 實時同步檔案
- flink sql 實時同步及離線同步SQL
- Mysql資料實時同步實踐MySql
- 什麼是資料實時同步,為什麼資料實時同步很重要
- [rsync+inotify]——監控客戶端檔案變化,rsync同步到伺服器客戶端伺服器
- 監控Data Guard實時同步
- linux rsync +inotify 實現 實時同步Linux
- GBase RTSync實時同步之設定按組同步
- rsync 守護程式及實時同步
- Linux系統目錄實時同步Linux
- 認識資料實時同步神器—Canal
- logstash mysql 準實時同步到 elasticsearchMySqlElasticsearch
- rsync + lsyncd 檔案實時同步/備份
- 時間同步協議NTP - 原理&實踐協議
- flink-cdc實時同步(oracle to mysql)OracleMySql
- 超實用!!rsync分散式 + inotify監控實時同步分散式
- mysql和redis實時同步資料怎麼實現MySqlRedis
- Swoole來實現實時非同步任務佇列非同步佇列
- 時態同步
- MySQL 到Oracle 實時資料同步HYXSMySqlOracle
- Java CompletableFuture 非同步超時實現探索Java非同步
- 即時通訊中音影片同步的實現
- 微信掃碼點餐,支援同桌同時點餐,實時同步。
- TiDB 作為 MySQL Slave 實現實時資料同步TiDBMySql
- goldengate 12.3 實現mysql資料及DDL實時同步GoMySql
- 資料同步:教你如何實時把資料從 MySQL 同步到 OceanBaseMySql
- 基於 Flink CDC 的實時同步系統
- 同步vmware時間
- chrony時間同步