一、配置rsync源服務器
在遠程同步任務中,負責發起rsync同步操作的客戶機稱爲發起端,而負責響應來自客戶機的rsync同步操作的服務器稱爲同步源。在同步過程中,同步源負責提供文檔的原始位置,發起端應對該位置具有讀取權限。
1.建立/etc/rsyncd.conf配置文件(同步源中)
該配置文件需要自行建立,下面將以原目錄/var/www/html、備份賬號backuper爲例,介紹其配置方法。
[root@localhost ~]# vim /etc/rsyncd.conf
uid = nobody
gid = nobody
use chroot = yes //禁錮在原目錄
address = 192.168.1.2 //監聽地址
port 873 //監聽端口
log file = /var/log/rsyncd.log //日誌文件位置
pid file = /var/run/rsyncd.pid //存放進程ID的文件位置
hosts allow = 192.168.1.0/24 //允許訪問的客戶機地址
[wwwroot] //共享模塊名稱
path = /var/www/html //源目錄的實際路徑
comment = document root of www.benet.com
read only = yes //僅允許以只讀方式做同步
dont compress = *.gz *.bz2 *.tgz *.zip *.rar *.z //同步時不再進行壓縮的文件類型
auth users = backuper //授權賬戶
secrets file = /etc/rsyncd_users.db //存放賬戶的數據文件
注意:同步可以採用匿名方式。只需將”auth users”和”secrets file”配置記錄去掉即可。
2.爲備份賬戶創建數據文件
[root@localhost ~]# vim /etc/rsyncd_users.db
backuper:pwd123 //無須建立同名系統用戶
[root@localhost ~]# chmod 600 /etc/rsyncd_users.db //調整文件權限,避免賬號信息泄露。
注意:備份用戶backuper需要對源目錄/var/www/html有相應的讀取權限。實際上只要other組有讀取權限,則備份用戶backuper和運行用戶nobody也就有讀取權限了。
1.啓動rsync服務程序
[root@localhost~]# rsync --daemon //啓用rsync服務
[root@localhost~]# iptables -I INPUT -p tcp --dport 873 -j ACCEPT //爲873端口開例外
如果需要結束rsync進程,可以執行:kill $(cat /var/run/rsyncd.pid)
二、使用rsync備份工具(在rsync客戶機,發起端)
1.rsync命令的基本用法
命令格式:”rsync [選項] 原始位置 目標位置”
常用選項:-r:遞歸模式,包含目錄及子目錄中的所有文件
-l:對於符號鏈接文件任然複製爲符號鏈接文件
-v:顯示同步過程的詳細信息
-a:歸檔模式,保留文件的權限、屬性等信息,等同於”-rlptgoD”
-z:在傳輸文件時進行壓縮
-p:保留文件的權限標記
-t:保留文件的時間標記
-g:保留文件的屬組標記(僅超級用戶使用)
-o:保留文件的屬主標記(僅超級用戶使用)
-H:保留硬鏈接文件
-A:保留ACL屬性信息
-D:保留設備文件及其他特殊文件
--delete:刪除目標位置有而原始位置沒有的文件
--checksum:根據校驗和(而不是文件大小、修改時間)來決定是否跳過文件
配置源的表示方法:
用戶名@主機地址::共享模塊名
或者 rsync://用戶名@主機地址/共享模塊名
注意:在本地使用rsync命令相當於cp命令
2.rsync備份操作
在發起端上發起遠程同步
確認同步結果
加上選項”--delete”選項,會在目標位置中刪除原始位置沒有的文件。
可以結合crond服務來完成定期同步:
創建密碼文件
給rsync命令指定密碼文件,可以在同步過程中不用再輸入密碼。
三、配置rsync+inotify實時同步
將rsync工具與inotify機制相結合,可以實現觸發式備份(實時同步),只要原始位置的文檔發生變化,則立即啓動增量備份操作。
這裏將在同步源上進行實時監控,如果有文件變動,便進行遠程同步,將文件備份到客戶機上。
注意:實現實時同步需要使用SSH祕鑰對的方式驗證身份
1.調整inotify內核參數
在linux內核中,默認的inotify機制提供了三個調控參數:
max_queued_events //表示監控事件隊列(16384)
max_user_instances //最多監控實例數(128)
max_user_watches //每個實例最多監控文件數(8192)
當要監控的目錄、文件數量較多時,建議加大這三個參數值。
2.安裝inotify-tools
inotify-tools軟件包可以提供inotifywait、inotifywatch輔助工具程序,用來監控、彙總改動情況。
“inotifywait”命令格式(監控/var/www/html):
[root@localhost ~]# inotifywait -mrq -e create,delete,modify,move /var/www/html
選項:”-m”表示持續監控;
”-r”表示遞歸整個目錄;
”-q”表示簡化輸出信息;
“-e”表示用來指定要監控那些事件
3.編寫觸發式同步腳本
4.配置SSH密鑰對驗證
在同步源上生成公鑰文件
將公鑰文件傳到發起端服務器,”rput”用戶是發起端的用戶,”-i”指定公鑰文件。
在發起端服務器上,修改配置文件/etc/ssh/sshd_conf,允許使用rput連接,並開啓密鑰對驗證。
測試SSH密鑰對連接
最後,便可以在同步源上執行腳本文件,實時監控本服務器上的文件變化,並進行備份。