舊,html
rsync是一個開源的快速備份工具,能夠在不一樣主機之間鏡像同步整個目錄樹,支持增量備份,保持 連接權限,且採用優化的同步算法,傳輸前執行壓縮,所以很是適用於異地備份,鏡像服務器等應用linux
在遠程同步任務中,負責發起rsync同步操做的客戶機稱爲發起端,而負責響應來自客戶機的rsync同步操做的服務器稱爲同步源,在同步過程當中,同步源負責提供文檔的原始位置,發起端對該位置具備讀取權限,如圖算法
配置rsync同步源(在同步源上配置,如圖服務器A)服務器
rsync做爲同步源時以守護進程運行,爲其餘客戶機提供備份源。配置rsync同步源須要創建配置文件/etc/rsyncd.conf,建立備份帳號,而後將rsync程序以‘--daemon’選項運行工具
vi /etc/rsyncd.conf優化
_______________________________________________________________________________________________________________ui
uid=root #以哪一個用戶的身份來傳輸
gid=root #以哪一個組的身份來傳輸
use chroot = yes #禁錮在源目錄
address=192.168.0.10 #監聽地址
port=873 #監聽端口默認爲873,也能夠是別的端口
log file=/var/log/rsync.log #指定日誌位置
pid file=/var/run/rsyncd.pid #指定pid文件位置spa
以上部分爲全局配置部分,如下爲模塊內的設置日誌
[wwwroot] #共享模塊名,自定義
path=/var/www/html #源目錄的實際路徑
use chroot=true #是否限定在該目錄下,默認爲true,當有軟鏈接時,須要改成fasle,若是爲true就限定爲模塊默認目錄
max connections=4 # 指定最大能夠鏈接的客戶端數
read only=no #是否爲只讀,若是是yes的話,客服端推送給服務端的時候不成功,這時候要改爲no
list= no #是否能夠列出模塊名 rsync --port 8730 172.16.37.139:: 若是爲yes的話會列出服務端全部的模塊名字。
comment = Document root of it小能手 #描述信息
dont compress = *.gz *.tgz #同步時不在壓縮的文件類型
auth users=test #指定受權帳戶
secrets file=/etc/rsyncd.passwd #存放帳號信息的數據文件,若是設定驗證用戶,這一項必須設置,設定密碼權限爲400.
hosts allow=192.168.0.101 #設置能夠容許訪問的主機,能夠是網段,多個Ip地址用空格隔開code
____________________________________________________________________________________________________________________
建立帳號數據文件/etc/rsyncd.passwd的內容格式爲:backuper:pwd123(username:password)
啓動服務的命令是:rsync --daemon
默認去使用/etc/rsyncd.conf這個配置文件,也能夠指定配置文件 rsync --daemon --config=/etc/rsyncd2.conf,更改配置文件不用重啓服務,即時生效。
同步時能夠採用匿名的方式,只要將其中的auth user 和secrets file 配置記錄去掉就能夠了
備份用戶backuper須要對源目錄/var/www/html 有相應的讀取權限。實際上只要other組有讀取權限,則備份用戶backuper和運行用戶nobody也就有讀取權限了
ls -ld /var/www/html
drwxr-xr-x. 2 root root 4096 5 月 2 2018 /var/www/html
rsync命令的基本用法(在發起端上執行rsync命令,如上圖服務器B)
rsync [選項] 原始位置 目標位置
rsync 命令須要指定同步源服務器中的資源位置。rsybc同步源的資源位置表示方式爲 「username@主機地址::共享模塊名」 或者 "rsync://username@主機地址/共享模塊名"
例如: rsync -avz backuper@192.168.4.200::wwwroot /root 或者 rsync -avz rsync://backuper@192.168.4.200/wwwroot /root
經常使用選項如
-r : 遞歸模式,包含目錄及子目錄中的全部文件|
-l : 對於符號連接文件仍然複製爲符號連接文件
-v : 顯示同步過程當中的詳細信息
-a :歸檔模式,保留文件的權限,屬性等信息 等同於組合選項「-rlptgoD」
-z : 在傳輸文件時進行壓縮
-p : 保留文件的權限標記
-t : 保留文件的時間標記
-g :保留文件的屬組標記(僅超級用戶使用)
-o : 保留文件的屬主標記(僅超級用戶使用)
-H:保留硬連接文件
-A : 保留ACL屬性信息
-D :保留設備文件及其其餘特殊文件
--delete: 刪除目標位置有而原始位置沒有的文件
--checksum: 根據校驗和(而不是文件大小,修改時間)來決定是否跳過文件
--password-file=密碼文件路徑和名 ,爲了在同步過程當中不用輸入密碼,須要建立一個密碼文件,保存備份用戶的密碼,在執行rsync同步時使用選擇‘「--password-file=」指定便可
rsync+inotify 實時同步
inotify通知接口,用來監控文件系統的各類變化,如文件存取,刪除,移動,修改等。利用這一機制,能夠很是方便地實現文件異動告警,增量備份,並針對目錄或文件的變化及時做出響應
將rsync工具和inotify機制相結合,能夠實現觸發式備份(實時同步)--------只要原始位置的文檔發生變化,則當即啓動增量備份操做,不然處於靜態等待狀態。這樣就避免了按固定週期備份時存在的延遲性,週期過密等問題。
由於inotify通知機制由linux內核提供,所以主要作本機監控,在觸發式備份中應用時更適合上行同步
配置
1.調整inotify內核參數
在linux內核中,默認的inotify機制提供三個調控參數:max_queue_events,max_user_instances,max_user_watches,分別表示監控事件隊列(16384),最多監控實例數(128),每一個實例最多監控文件數(8192)
cat /proc/sys/fs/inotify/max_queue_events
16384
cat /proc/sys/fs/inotify/max_user_instances
128
cat /proc/sys/fs/inotify/max_user_watches
8192
未完待續。。。。
常見錯誤
@ERROR: auth failed on module wwwroot (wwwroot 是本身的模塊名)
rsync error: error startingclient-serverprotocol (code 5) at main.c(1503) [sender=3.0.6]
查看 服務端/etc/rsync.password(存放帳號密碼信息的文件) 配置文件是否有問題
好比:
多餘的空格 空行
錯誤緣由
1> 客戶端密碼文件的權限不是600
2> 服務端密碼文件不是600
3> 服務端密碼文件不存在(名字寫錯了/沒有建立/配置文件參數寫錯了)
4> 服務端密碼文件裏保存的用戶名和密碼不正確