rsync中文手冊之使用rsync實現網站鏡像和備份linux第1/3頁
2024-09-01 13:47:14
供稿:網友
簡介
對于選擇Linux 作為應用平臺的的中小型企業或網站來說,往往面臨如何實現數據遠程備份或者網站鏡象的問題,雖然有商業化的備份和鏡象產品可供選擇,但這些產品的價格往往過于昂貴。因此如何利用自由軟件高效實現遠程備份和網站鏡象就成為一個值得討論的話題。
通過網絡進行遠程數據備份或者網站鏡象的最簡單的方法就是使用wget,但是這種方式每次都需要將所有數據都重新在網絡上傳輸一遍,而不考慮哪些文件是經過更新的,因此效率非常低下。尤其在需要備份的數據量很大的時候,往往需要花費數個小時來在網絡上進行數據傳輸。
因此這里就介紹一種高效的網絡遠程備份和鏡象工具-rsync,它可以滿足絕大多數要求不是特別嚴格的備份需求。
rsync是類unix系統下的數據鏡像備份工具,從軟件的命名上就可以看出來了——remote sync。它的特性如下:
可以鏡像保存整個目錄樹和文件系統。
可以很容易做到保持原來文件的權限、時間、軟硬鏈接等等。
無須特殊權限即可安裝。
優化的流程,文件傳輸效率高。
可以使用rcp、ssh等方式來傳輸文件,當然也可以通過直接的socket連接。
支持匿名傳輸,以方便進行網站鏡象。
軟件下載
rysnc的主頁地址為:
目前最新版本為2.4.6??梢赃x擇從原始網站下載:。也可以選擇從本站下載:rsync 2.4.6。
編譯安裝
rsync的編譯安裝非常簡單,只需要以下簡單的幾步:
[root@www rsync-2.4.6]# ./configure
[root@www rsync-2.4.6]# make
[root@www rsync-2.4.6]# make install
但是需要注意的是必須在服務器A和B上都安裝rsync,其中A服務器上是以服務器模式運行rsync,而B上則以客戶端方式運行rsync。這樣在web服務器A上運行rsync守護進程,在B上定時運行客戶程序來備份web服務器A上需要備份的內容。
rsync服務器
1、rsync服務器的啟動
在web服務器A上需要以守護進程方式來啟動rsync服務器,只需要運行:
[root@www rsync-2.4.6]# /usr/local/bin/rsync --daemon
即可啟動。rsync默認服務端口為873,服務器在該端口接收客戶的匿名或者認證方式的備份請求。
如果要在啟動時把服務起來,有幾種不同的方法,比如:
a、加入inetd.conf
編輯/etc/services,加入rsync 873/tcp,指定rsync的服務端口是873。編加/etc/inetd.conf,加入rsync stream tcp nowait root /bin/rsync rsync --daemon
注:對于xinetd,設置方法類似。
b、加入rc.local
編輯/etc/rc.d/rc.local,在最后添加:
/usr/local/bin/rsync --daemon
2、rsync的配置
對于rsync服務器來說,最重要和復雜的就是它的配置了。rsync服務器的配置文件為/etc/rsyncd.conf,其控制認證、訪問、日志記錄等等。
該文件是由一個或多個模塊結構組成。一個模塊定義以方括弧中的模塊名開始,直到下一個模塊定義開始或者文件結束,模塊中包含格式為name = value的參數定義。每個模塊其實就對應需要備份的一個目錄樹,比方說在我們的實例環境中,有三個目錄樹需要備份:/www/、 /home/web_user1/和/home/web_user2/,那么就需要在配置文件中定義三個模塊,分別對應三個目錄樹。
配置文件是行為單位的,也就是每個新行都表示一個新的注釋、模塊定義或者參數賦值。以#開始的行表示注釋,以"/"結束的行表示下面一行是該行的繼續。參數賦值中等號后可能是一個大小寫不敏感的字符串、一個以trure/false表示的布爾值。
全局參數
在文件中[modlue]之前的所有參數都是全局參數,當然也可以在全局參數部分定義模塊參數,這時候該參數的值就是所有模塊的默認值。
motd file
"motd file"參數用來指定一個消息文件,當客戶連接服務器時該文件的內容顯示給客戶,默認是沒有motd文件的。
log file
"log file"指定rsync的日志文件,而不將日志發送給syslog。
pid file
指定rsync的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。
模塊參數
在全局參數之后就需要定義一個或多個模塊了,模塊中可以定義以下參數:
comment
給模塊指定一個描述,該描述連同模塊名在客戶連接得到模塊列表時顯示給客戶。默認沒有描述定義。
path
指定該模塊的供備份的目錄樹路徑,該參數是必須指定的。
use chroot
如果"use chroot"指定為true,那么rsync在傳輸文件以前首先chroot到path參數所指定的目錄下。這樣做的原因是實現額外的安全防護,但是缺點是需要以roots權限,并且不能備份指向外部的符號連接所指向的目錄文件。默認情況下chroot值為true。
max connections
指定該模塊的最大并發連接數量以保護服務器,超過限制的連接請求將被告知隨后再試。默認值是0,也就是沒有限制。
lock file
指定支持max connections參數的鎖文件,默認值是/var/run/rsyncd.lock。
read only
該選項設定是否允許客戶上載文件。如果為true那么任何上載請求都會失敗,如果為false并且服務器目錄讀寫權限允許那么上載是允許的。默認值為true。
list
該選項設定當客戶請求可以使用的模塊列表時,該模塊是否應該被列出。如果設置該選項為false,可以創建隱藏的模塊。默認值是true。
uid
該選項指定當該模塊傳輸文件時守護進程應該具有的uid,配合gid選項使用可以確定哪些可以訪問怎么樣的文件權限,默認值是"nobody"。
gid
該選項指定當該模塊傳輸文件時守護進程應該具有的gid。默認值為"nobody"。
exlude
用來指定多個由空格隔開的多個模式列表,并將其添加到exclude列表中。這等同于在客戶端命令中使用--exclude來指定模式,不過配置文件中指定的exlude模式不會傳遞給客戶端,而僅僅應用于服務器。一個模塊只能指定一個exlude選項,但是可以在模式前面使用"-"和"+"來指定是 exclude還是include。
但是需要注意的一點是該選項有一定的安全性問題,客戶很有可能繞過exlude列表,如果希望確保特定的文件不能被訪問,那就最好結合uid/gid選項一起使用。
exlude from
指定一個包含exclude模式的定義的文件名,服務器從該文件中讀取exlude列表定義。
include
用來指定多個由空格隔開的多個rsync并應該exlude的模式列表。這等同于在客戶端命令中使用--include來指定模式,結合 include和 exlude可以定義復雜的exlude/include規則。一個模塊只能指定一個include選項,但是可以在模式前面使用"-"和"+"來指定是 exclude還是include。
include from
指定一個包含include模式的定義的文件名,服務器從該文件中讀取include列表定義。