rsync遠程同步html
rsync(Remote Sync)是一個Unix/linux系統下的文件同步和傳輸工具。Rsync經過「rsync算法」提供了一個客戶機和遠程文件服務器的文件同步的快速方法。每次只傳送兩個文件的不一樣部分(即支持增量備份),而不是每次都整份傳送linux
rsync包括以下的一些特性:算法
能更新整個目錄樹和文件系統;
有選擇性的保持符號鏈鏈、硬連接、文件屬性、權限、設備以及時間等;shell
傳輸前執行壓縮,所以很是適用於異地備份、鏡像服務器等應用。
能用rsh、ssh或直接端口作爲傳輸端口;
支持匿名rsync同步文件,是理想的鏡像工具;安全
Rsync能夠經過rsh或ssh使用,也能以daemon模式去運行,在以daemon方式運行時Rsync server會打開一個873端口,等待客戶端去鏈接。服務器
Rsync的官方站點位於http://rsync.samba.orgssh
rsync服務器架設比較簡單,可能咱們安裝好rsync後,並無發現配置文件,以及rsync服務器啓動程序,由於每一個管理員可能對rsync用途不同,因此通常的發行版只是安裝好軟件就完事了,讓管理員來根據本身的用途和方向來本身架設rsync服務器;由於這個rsync應用比較廣,能在同一臺主機進行備份工做,還能在不一樣主機之間進行工做。在不一樣主機之間的進行備份,是必須架設rsync服務器的。ide
在遠程同步任務中,負責發起rsync同步操做的客戶機稱爲發起端,而負責響應來自客機的rsync同步操做的服務器稱爲備份源。在下行同步(下載)中,備份源負責提供文檔的原始位置,發起端應對該位置具備讀取權限;在上行同步(上傳)中,備份源負責提供文檔的目標位置,發起端應對該位置具備寫入權限。以下圖所示:工具
使用rsync同步工具時,備份源既能夠是SSH服務器,也能夠是以服務器模式運行的rsync程序,下面分別講解配置SSH備份源、rsync備份源的方法。測試
(本文以CentOSL6.5_x86_64系統中的rsync-3.0.6-9.el6_4.1.x86_64爲例)
使用SSH協議的好處是可以基於更安全的遠程鏈接,加強備份的保密性。這種方式的備份源最容易配置,只要確認源文件夾的位置,並準備一個備份操做用戶便可,以服務A(備份源)爲例,若要將網站目錄/var/www/html做爲備份源,容許用戶rget作下行備份,用戶rput作上行備份,操做步驟以下:
在備份源服務器(IP地址爲:172.16.41.4)上新建備份用戶rget、rput,分別用來實現下載、上傳操做:
確認sshd服務正常運行,且容許用戶rget、rput能訪問ssh服務器。在/etc/ssh/sshd_config文件中添以下配置項,只容許rget和rput能遠程登陸ssh服務器。並重啓sshd服務,確保修改生效。
調整備份源所提供文檔所在目錄的權限(如/var/www/html目錄),使rget用戶有權讀取、rput用戶有權寫入。在linux系統中,正常建立的目錄權限爲755,文件權限爲644,所以對於rget用戶來講,默認權限已經知足下行備份的要求。
可是對於rput用戶來講,要可以寫入纔有權限作上行備份,建議使用ACL訪問控制機制設置用戶rput對/var/www/html的寫入權限。
其中」-R」選項表示遞歸操做,」-m」選項表示修改權限,default表示在html/目錄新建的文檔用戶rput也具備rwx權限。當須要清除所設置的ACL屬性時,setfacl命令的-x或-b選項,分別表示用來個別刪除和所有刪除。到此SSH備份源配置完畢。
有了備份源服務器之後,就可使用rsync工具來執行遠程同步了。本文講解的備份操做均在客戶機(發起端,IP爲:172.16.41.3)執行。實際上備份源與發起端能夠是同一臺主機,其效果至關於本地備份而不是異地備份。
rsync命令的基本用法:
格式:rsync【選項】 源文件 目標文件
常見的選項:
-a,--archive歸檔模式,表示以遞歸的方式傳輸文件,而且保持文件屬性,等同於-rlptgoD
-r,–recursive對子目錄以遞歸模式處理
-l,--links表示拷貝連接文件
-p , --perms表示保持文件原有權限
-t , --times表示保持文件原有時間
-g , --group表示保持文件原有屬用戶組
-o , --owner表示保持文件原有屬主
-D , --devices表示塊設備文件信息
-z , --compress表示壓縮傳輸
-H表示硬鏈接文件
-A保留ACL屬性信息
-P顯示傳輸進度
-u, --update僅僅進行更新,也就是跳過全部已經存在於目標位置,而且文件時間晚於要備份的文件。(不覆蓋更新的文件)
--port=PORT指定其餘的rsync服務端口
--delete刪除那些目標位置有而原始位置沒有的文件
--password-file=FILE從FILE中獲得密碼
--bwlimit=KBPS限制I/O帶寬,KBytes /second
--filter「-文件名」須要過濾的文件
--exclude=:須要過濾的文件
-v顯示同步過程的詳細信息
rsync備份操做示例:
下行同步SSH備份源:
將服務器172.16.41.4中的/var/www/html文件夾與客戶機(172.16.41.3)本地的/wwwroot文件夾進行同步,保持文件權限和屬性、軟/硬連接、ACL屬性、刪除/wwwroot目錄中多餘的文件,並在傳輸過程當中進行壓縮。
確保備份源服務器中/var/www/html目錄下有文件:
驗證同步結果:
上行同步SSH備份源:
將客戶機中的/usr/share/doc/HTML/目錄中的內容上傳同步到SSH服務器的/var/www/html目錄下,因爲備份用戶rput並不是root用戶,所以」-g」、」-o」等選項將沒法使用。
驗證結果:在172.16.41.4主機上顯示/var/www/html目錄下的列表
編寫rsync備份腳本:
實際生產環境中的備份工做一般是按計劃重複執行的,例如每晚上2點30分對服務器網站目錄作一次下行同步,按期任務能夠交給 crond服務來完成,而實際的備份操做則能夠寫到shell腳本中。
因爲計劃備份中的腳本在後臺執行,沒法根據提示來輸入密碼,所以編寫rsync備份腳本時如何解決交互驗證的問題就成爲關鍵所在。
SSH備份源的無交互驗證:
對於SSH服務器來講,採用密鑰驗證是避免交互式登陸的最佳方法,只要在客戶機中建立無私鑰短語的密鑰對,而後將公鑰文件分發給服務器中的備份用戶,就能夠實現無密碼自動登陸了。
在客戶機上建立密鑰對:
將公鑰文件分發給服務器:
在客戶機測試SSH的密鑰驗證:
成功實現免交互自動登陸後,再次使用rsync訪問SSH備份源時,也就再也不提示須要密碼驗證了,注意,執行腳本的必須是在客戶機中創建立密鑰對的用戶。
編寫SSH備份源的shell腳本:
腳本內容以下:
對建好的備份腳本設置適當權限:
至此SSH備份源的rsync遠程備份搭建完畢。
因爲篇幅偏長影響閱讀質量,故下篇博文接着介紹有關rsync備份源的方法