LinuxTools---Rsync---原理及其應用(一)

rsync遠程同步html

rsync(Remote Sync)是一個Unix/linux系統下的文件同步和傳輸工具。Rsync經過「rsync算法」提供了一個客戶機和遠程文件服務器的文件同步的快速方法。每次只傳送兩個文件的不一樣部分(即支持增量備份),而不是每次都整份傳送linux

rsync包括以下的一些特性:算法

能更新整個目錄樹和文件系統;
有選擇性的保持符號鏈鏈、硬連接、文件屬性、權限、設備以及時間等;
shell

傳輸前執行壓縮,所以很是適用於異地備份、鏡像服務器等應用。
能用rsh、ssh或直接端口作爲傳輸端口;
支持匿名rsync同步文件,是理想的鏡像工具;
安全

Rsync能夠經過rshssh使用,也能以daemon模式去運行,在以daemon方式運行時Rsync server會打開一個873端口,等待客戶端去鏈接。服務器

Rsync的官方站點位於http://rsync.samba.orgssh

rsync服務器架設比較簡單,可能咱們安裝好rsync後,並無發現配置文件,以及rsync服務器啓動程序,由於每一個管理員可能對rsync用途不同,因此通常的發行版只是安裝好軟件就完事了,讓管理員來根據本身的用途和方向來本身架設rsync服務器;由於這個rsync應用比較廣,能在同一臺主機進行備份工做,還能在不一樣主機之間進行工做。在不一樣主機之間的進行備份,是必須架設rsync服務器的。ide

在遠程同步任務中,負責發起rsync同步操做的客戶機稱爲發起端,而負責響應來自客機的rsync同步操做的服務器稱爲備份源。在下行同步(下載)中,備份源負責提供文檔的原始位置,發起端應對該位置具備讀取權限;在上行同步(上傳)中,備份源負責提供文檔的目標位置,發起端應對該位置具備寫入權限。以下圖所示:工具

wKioL1M3_vvDBc2CAAELsV0vb5w993.jpg

使用rsync同步工具時,備份源既能夠是SSH服務器,也能夠是以服務器模式運行的rsync程序,下面分別講解配置SSH備份源、rsync備份源的方法。測試

(本文以CentOSL6.5_x86_64系統中的rsync-3.0.6-9.el6_4.1.x86_64爲例)

wKiom1M3_2STdw7PAABdMdg7Iyc244.jpg

1.配置SSH備份源

使用SSH協議的好處是可以基於更安全的遠程鏈接,加強備份的保密性。這種方式的備份源最容易配置,只要確認源文件夾的位置,並準備一個備份操做用戶便可,以服務A(備份源)爲例,若要將網站目錄/var/www/html做爲備份源,容許用戶rget作下行備份,用戶rput作上行備份,操做步驟以下:


在備份源服務器(IP地址爲:172.16.41.4)上新建備份用戶rgetrput,分別用來實現下載、上傳操做:

wKioL1M3_z-zCBu-AAFyqTw7MVQ528.jpg


確認sshd服務正常運行,且容許用戶rgetrput能訪問ssh服務器。在/etc/ssh/sshd_config文件中添以下配置項,只容許rgetrput能遠程登陸ssh服務器。並重啓sshd服務,確保修改生效。

wKiom1M3_2jBtff5AAAVBHtsSG4290.jpg


wKioL1M3_0KCyOGvAABbjJROngI852.jpg


調整備份源所提供文檔所在目錄的權限(如/var/www/html目錄),使rget用戶有權讀取、rput用戶有權寫入。在linux系統中,正常建立的目錄權限爲755,文件權限爲644,所以對於rget用戶來講,默認權限已經知足下行備份的要求。

wKiom1M3_2uCOwODAAB-Dy3I0S8554.jpg


可是對於rput用戶來講,要可以寫入纔有權限作上行備份,建議使用ACL訪問控制機制設置用戶rput/var/www/html的寫入權限。

wKiom1M3_26BqxBIAAHVcvbI9TU309.jpg

其中」-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=FILEFILE中獲得密碼
--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目錄下有文件:

wKioL1M3_0jgCxJSAACLToFuN7c094.jpg


在客戶機本地建立目標目錄:

wKiom1M3_3CxBW4dAAAs0PjmcQM045.jpg


在客戶機上執行rsync命令實現下行同步。

wKioL1M3_0rjOl0hAAEwtauvvaQ093.jpg


驗證同步結果:

wKiom1M4ARDwaKO3AAB7xgJRjAY465.jpg


上行同步SSH備份源:

將客戶機中的/usr/share/doc/HTML/目錄中的內容上傳同步到SSH服務器的/var/www/html目錄下,因爲備份用戶rput並不是root用戶,所以」-g」」-o」等選項將沒法使用。

wKioL1M4AOrCAhXTAAGouuO_B_g810.jpg


驗證結果:在172.16.41.4主機上顯示/var/www/html目錄下的列表

wKiom1M4ARSyx5X2AACweDjFyGE428.jpg


編寫rsync備份腳本:

實際生產環境中的備份工做一般是按計劃重複執行的,例如每晚上2點30分對服務器網站目錄作一次下行同步,按期任務能夠交給 crond服務來完成,而實際的備份操做則能夠寫到shell腳本中。

因爲計劃備份中的腳本在後臺執行,沒法根據提示來輸入密碼,所以編寫rsync備份腳本時如何解決交互驗證的問題就成爲關鍵所在。

SSH備份源的無交互驗證:

對於SSH服務器來講,採用密鑰驗證是避免交互式登陸的最佳方法,只要在客戶機中建立無私鑰短語的密鑰對,而後將公鑰文件分發給服務器中的備份用戶,就能夠實現無密碼自動登陸了。

在客戶機上建立密鑰對:

wKioL1M4A-PTVNZAAAJNWYCarYw341.jpg


將公鑰文件分發給服務器:

wKiom1M4BA2xaCFlAAAwq7pxN9I580.jpg


在客戶機測試SSH的密鑰驗證:

wKioL1M4AHrTY5UbAAB6HXlOKFE862.jpg


成功實現免交互自動登陸後,再次使用rsync訪問SSH備份源時,也就再也不提示須要密碼驗證了,注意,執行腳本的必須是在客戶機中創建立密鑰對的用戶。


編寫SSH備份源的shell腳本:

wKioL1M4BXjyEyXPAAAz0Dw6yWc520.jpg


腳本內容以下:

wKiom1M4ARvxUNOdAACWokYm_6M414.jpg


對建好的備份腳本設置適當權限:

wKioL1M4AHziiLouAABEiECxHe8027.jpg


建立crond計劃任務:wKiom1M4AKXT8gMjAABdemHnKNU052.jpg


至此SSH備份源的rsync遠程備份搭建完畢。

因爲篇幅偏長影響閱讀質量,故下篇博文接着介紹有關rsync備份源的方法

相關文章
相關標籤/搜索