1、rsync的概述算法
rsync是類unix系統下的數據鏡像備份工具,從軟件的命名上就能夠看出來了——remote sync。rsync是Linux系統下的文件同步和數據傳輸工具,它採用「rsync」算法,能夠將一個客戶機和遠程文件服務器之間的文件同步,也能夠在本地系統中將數據從一個分區備份到另外一個分區上。若是rsync在備份過程當中出現了數據傳輸中斷,恢復後能夠繼續傳輸不一致的部分。rsync能夠執行完整備份或增量備份。它的主要特色有:shell
1.能夠鏡像保存整個目錄樹和文件系統;安全
2.能夠很容易作到保持原來文件的權限、時間、軟硬連接;無須特殊權限便可安裝;服務器
3.能夠增量同步數據,文件傳輸效率高,於是同步時間短;ssh
4.可使用rcp、ssh等方式來傳輸文件,固然也能夠經過直接的socket鏈接;socket
5.支持匿名傳輸,以方便進行網站鏡象等;工具
6.加密傳輸數據,保證了數據的安全性;網站
-v是「--verbose」,即詳細模式輸出; -z表示「--compress」,即傳輸時對數據進行壓縮處理;ui
-r表示「--recursive」,即對子目錄以遞歸的模式處理;-t是「--time」,即保持文件時間信息;加密
-o表示「owner」,用來保持文件屬主信息;-p是「perms」,用來保持文件權限;
-g是「group」,用來保持文件的屬組信息;
--progress用於顯示數據鏡像同步的過程;
--delete選項指定以rsync服務器端爲基礎進行數據鏡像同步,也就是要保持rsync服務器端目錄與客戶端目錄的徹底一致;
--exclude選項用於排除不須要傳輸的文件類型;
2、rsync的優勢與不足
與傳統的cp、tar備份方式對比,rsync具備安全性高、備份迅速、支持增量備份等優勢,經過rsync能夠解決對實時性要求不高的數據備份需求,例如,按期地備份文件服務器數據到遠端服務器,對本地磁盤按期進行數據鏡像等。
可是隨着系統規模的不斷擴大,rsync的缺點逐漸被暴露了出來。首先,rsync作數據同步時,須要掃描全部文件後進行對比,而後進行差量傳輸。若是文件很大,掃面文件是很是耗時的,並且發生變化的文件每每是不多一部分,所以rsync是很是低效的方式。其次,rsync不能實時監測、同步數據,雖然它能夠經過Linux守護進程的方式觸發同步,可是兩次觸發動做必定會有時間差,可能致使服務器端和客戶端數據出現不一致。
在對rsync服務器配置結束之後,下一步就須要在客戶端發出rsync命令來實現將服務器端的文件備份到客戶端來。rsync是一個功能很是強大的工具,其命令也有不少功能特點選項,咱們下面就對它的選項一一進行分析說明。Rsync的命令格式能夠爲如下六種: rsync [OPTION]... SRC DEST rsync [OPTION]... SRC [USER@]HOST:DEST rsync [OPTION]... [USER@]HOST:SRC DEST rsync [OPTION]... [USER@]HOST::SRC DEST rsync [OPTION]... SRC [USER@]HOST::DEST rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST] 對應於以上六種命令格式,rsync有六種不一樣的工做模式: 1)拷貝本地文件。當SRC和DES路徑信息都不包含有單個冒號":"分隔符時就啓動這種工做模式。如:rsync -a /data /backup 2)使用一個遠程shell程序(如rsh、ssh)來實現將本地機器的內容拷貝到遠程機器。當DST路徑地址包含單個冒號":"分隔符時啓動該模式。如:rsync -avz *.c foo:src 3)使用一個遠程shell程序(如rsh、ssh)來實現將遠程機器的內容拷貝到本地機器。當SRC地址路徑包含單個冒號":"分隔符時啓動該模式。如:rsync -avz foo:src/bar /data 4)從遠程rsync服務器中拷貝文件到本地機。當SRC路徑信息包含"::"分隔符時啓動該模式。如:rsync -av root@172.16.78.192::www /databack 5)從本地機器拷貝文件到遠程rsync服務器中。當DST路徑信息包含"::"分隔符時啓動該模式。如:rsync -av /databack root@172.16.78.192::www 6)列遠程機的文件列表。這相似於rsync傳輸,不過只要在命令中省略掉本地機信息便可。如:rsync -v rsync://172.16.78.192/wwwrsync參數的具體解釋以下:-v, --verbose 詳細模式輸出-q, --quiet 精簡輸出模式-c, --checksum 打開校驗開關,強制對文件傳輸進行校驗-a, --archive 歸檔模式,表示以遞歸方式傳輸文件,並保持全部文件屬性,等於-rlptgoD-r, --recursive 對子目錄以遞歸模式處理-R, --relative 使用相對路徑信息-b, --backup 建立備份,也就是對於目的已經存在有一樣的文件名時,將老的文件從新命名爲~filename。可使用--suffix選項來指定不一樣的備份文件前綴。--backup-dir 將備份文件(如~filename)存放在在目錄下。-suffix=SUFFIX 定義備份文件前綴-u, --update 僅僅進行更新,也就是跳過全部已經存在於DST,而且文件時間晚於要備份的文件。(不覆蓋更新的文件)-l, --links 保留軟鏈結-L, --copy-links 想對待常規文件同樣處理軟鏈結--copy-unsafe-links 僅僅拷貝指向SRC路徑目錄樹之外的鏈結--safe-links 忽略指向SRC路徑目錄樹之外的鏈結-H, --hard-links 保留硬鏈結-p, --perms 保持文件權限-o, --owner 保持文件屬主信息-g, --group 保持文件屬組信息-D, --devices 保持設備文件信息-t, --times 保持文件時間信息-S, --sparse 對稀疏文件進行特殊處理以節省DST的空間-n, --dry-run現實哪些文件將被傳輸-W, --whole-file 拷貝文件,不進行增量檢測-x, --one-file-system 不要跨越文件系統邊界-B, --block-size=SIZE 檢驗算法使用的塊尺寸,默認是700字節-e, --rsh=COMMAND 指定使用rsh、ssh方式進行數據同步--rsync-path=PATH 指定遠程服務器上的rsync命令所在路徑信息-C, --cvs-exclude 使用和CVS同樣的方法自動忽略文件,用來排除那些不但願傳輸的文件--existing 僅僅更新那些已經存在於DST的文件,而不備份那些新建立的文件--delete 刪除那些DST中SRC沒有的文件--delete-excluded 一樣刪除接收端那些被該選項指定排除的文件--delete-after 傳輸結束之後再刪除--ignore-errors 及時出現IO錯誤也進行刪除--max-delete=NUM 最多刪除NUM個文件--partial 保留那些因故沒有徹底傳輸的文件,以是加快隨後的再次傳輸--force 強制刪除目錄,即便不爲空--numeric-ids 不將數字的用戶和組ID匹配爲用戶名和組名--timeout=TIME IP超時時間,單位爲秒-I, --ignore-times 不跳過那些有一樣的時間和長度的文件--size-only 當決定是否要備份文件時,僅僅察看文件大小而不考慮文件時間--modify-window=NUM 決定文件是否時間相同時使用的時間戳窗口,默認爲0-T --temp-dir=DIR 在DIR中建立臨時文件--compare-dest=DIR 一樣比較DIR中的文件來決定是否須要備份-P 等同於 --partial--progress 顯示備份過程-z, --compress 對備份的文件在傳輸時進行壓縮處理--exclude=PATTERN 指定排除不須要傳輸的文件模式--include=PATTERN 指定不排除而須要傳輸的文件模式--exclude-from=FILE 排除FILE中指定模式的文件--include-from=FILE 不排除FILE指定模式匹配的文件--version 打印版本信息--address 綁定到特定的地址--config=FILE 指定其餘的配置文件,不使用默認的rsyncd.conf文件--port=PORT 指定其餘的rsync服務端口--blocking-io 對遠程shell使用阻塞IO-stats 給出某些文件的傳輸狀態--progress 在傳輸時現實傳輸過程--log-format=formAT 指定日誌文件格式--password-file=FILE 從FILE中獲得密碼--bwlimit=KBPS 限制I/O帶寬,KBytes per second-h, --help 顯示幫助信息