歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux rsync命令詳解

Linux rsync命令詳解

日期:2017/2/28 16:16:34   编辑:Linux教程

1、什麼是Rsync
Rsync(remote synchronize)是一個遠程數據同步工具,可通過LAN/WAN快速同步多台主機間的文件。Rsync使用所謂的“Rsync算法”來使本地和遠程兩個主機之間的文件達到同步,這個算法只傳送兩個文件的不同部分,而不是每次都整份傳送,因此速度相當快。
Rsync本來是用於替代rcp的一個工具,目前由rsync.samba.org維護,所以rsync.conf文件的格式類似於samba的主配置文件。Rsync可以通過rsh或ssh使用,也能以daemon模式去運行,在以daemon方式運行時Rsync server會打開一個873端口,等待客戶端去連接。連接時,Rsync server會檢查口令是否相符,若通過口令查核,則可以開始進行文件傳輸。第一次連通完成時,會把整份文件傳輸一次,以後則就只需進行增量備份。
Rsync支持大多數的類Unix系統,無論是Linux、Solaris還是BSD上都經過了良好的測試。此外,它在windows平台下也有相應的版本,如cwRsync和Sync2NAS等工具。
Rsync的基本特點如下:
1.可以鏡像保存整個目錄樹和文件系統;
2.可以很容易做到保持原來文件的權限、時間、軟硬鏈接等;
3.無須特殊權限即可安裝;
4.優化的流程,文件傳輸效率高;
5.可以使用rsh、ssh等方式來傳輸文件,當然也可以通過直接的socket連接;
6.支持匿名傳輸。
2、Rsync同步算法
Rsync只所以同步文件的速度相當快,是因為“Rsync同步算法”能在很短的時間內計算出需要備份的數據,關於Rsync的同步算法描述如下:
假定在1號和2號兩台計算機之間同步相似的文件A與B,其中1號對文件A擁有訪問權,2號對文件B擁有訪問權。並且假定主機1號與2號之間的網絡帶寬很小。那麼rsync算法將通過下面的五個步驟來完成:
1、2號將文件B分割成一組不重疊的固定大小為S字節的數據塊,最後一塊可能會比S 小。
2、2號對每一個分割好的數據塊執行兩種校驗:一種是32位的滾動弱校驗,另一種是128位的MD4強校驗
3、2號將這些校驗結果發給1號。
4、1號通過搜索文件A的所有大小為S的數據塊(偏移量可以任選,不一定非要是S的倍數),來尋找與文件B的某一塊有著相同的弱校驗碼和強校驗碼的數據塊。這項工作可以借助滾動校驗的特性很快完成。
5、1號發給2號一串指令來生成文件A在2號上的備份。這裡的每一條指令要麼是對文件B經擁有某一個數據塊而不須重傳的證明,要麼是一個數據塊,這個數據塊肯定是沒有與文件B的任何一個數據塊匹配上的。
3、Rsync參數說明
3.1 rsyncd.conf配置文件
-、全局參數
在文件中[module]之前的所有參數都是全局參數,當然也可以在全局參數部分定義模塊參數,這時候該參數的值就是所有模塊的默認值。
port
指定後台程序使用的端口號,默認為873。
motd file
"motd file"參數用來指定一個消息文件,當客戶連接服務器時該文件的內容顯示給客戶,默認是沒有motd文件的。
log file
"log file"指定rsync的日志文件,而不將日志發送給syslog。比如可指定為“/var/log/rsyncd.log”。
pid file
指定rsync的pid文件,通常指定為“/var/run/rsyncd.pid”。
syslog facility
指 定rsync發送日志消息給syslog時的消息級別,常見的消息級別是:uth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, security, sys-log, user, uucp, local0, local1, local2, local3,local4, local5, local6和local7。默認值是daemon。
二、模塊參數
主要是定義服務器哪個目錄要被同步。其格式必須為“[module]”形式,這個名字就是在rsync 客戶端看到的名字,其實有點象Samba服務器提供的共享名。而服務器真正同步的數據是通過 path 來指定的。我們可以根據自己的需要,來指定多個模塊,模塊中可以定義以下參數:
comment
給模塊指定一個描述,該描述連同模塊名在客戶連接得到模塊列表時顯示給客戶。默認沒有描述定義。
path
指定該模塊的供備份的目錄樹路徑,該參數是必須指定的。
use chroot
如 果"use chroot"指定為true,那麼rsync在傳輸文件以前首先chroot到path參數所指定的目錄下。這樣做的原因是實現額外的安全防護,但是缺點是需要以roots權限,並且不能備份指向外部的符號連接所指向的目錄文件。默認情況下chroot值為true。
uid
該選項指定當該模塊傳輸文件時守護進程應該具有的uid,配合gid選項使用可以確定哪些可以訪問怎麼樣的文件權限,默認值是"nobody"。
gid
該選項指定當該模塊傳輸文件時守護進程應該具有的gid。默認值為"nobody"。
max connections
指定該模塊的最大並發連接數量以保護服務器,超過限制的連接請求將被告知隨後再試。默認值是0,也就是沒有限制。
list
該選項設定當客戶請求可以使用的模塊列表時,該模塊是否應該被列出。如果設置該選項為false,可以創建隱藏的模塊。默認值是true。
read only
該選項設定是否允許客戶上載文件。如果為true那麼任何上載請求都會失敗,如果為false並且服務器目錄讀寫權限允許那麼上載是允許的。默認值為true。
exclude
用來指定多個由空格隔開的多個文件或目錄(相對路徑),並將其添加到exclude列表中。這等同於在客戶端命令中使用--exclude來指定模式,一個模塊只能指定一個exclude選項。但是需要注意的一點是該選項有一定的安全性問題,客戶很有可能繞過exclude列表,如果希望確保特定的文件不能被訪問,那就最好結合uid/gid選項一起使用。
exclude from
指定一個包含exclude模式的定義的文件名,服務器從該文件中讀取exclude列表定義。

Copyright © Linux教程網 All Rights Reserved