rsync中文手冊之使用rsync實(shí)現(xiàn)網(wǎng)站鏡像和備份linux第1/3頁
更新時(shí)間:2008年09月17日 13:04:44 作者:
用rsync實(shí)現(xiàn)網(wǎng)站鏡像和備份 雖然是linux下的操作,但原理和windows下類似
簡介
對于選擇Linux 作為應(yīng)用平臺(tái)的的中小型企業(yè)或網(wǎng)站來說,往往面臨如何實(shí)現(xiàn)數(shù)據(jù)遠(yuǎn)程備份或者網(wǎng)站鏡象的問題,雖然有商業(yè)化的備份和鏡象產(chǎn)品可供選擇,但這些產(chǎn)品的價(jià)格往往過于昂貴。因此如何利用自由軟件高效實(shí)現(xiàn)遠(yuǎn)程備份和網(wǎng)站鏡象就成為一個(gè)值得討論的話題。
通過網(wǎng)絡(luò)進(jìn)行遠(yuǎn)程數(shù)據(jù)備份或者網(wǎng)站鏡象的最簡單的方法就是使用wget,但是這種方式每次都需要將所有數(shù)據(jù)都重新在網(wǎng)絡(luò)上傳輸一遍,而不考慮哪些文件是經(jīng)過更新的,因此效率非常低下。尤其在需要備份的數(shù)據(jù)量很大的時(shí)候,往往需要花費(fèi)數(shù)個(gè)小時(shí)來在網(wǎng)絡(luò)上進(jìn)行數(shù)據(jù)傳輸。
因此這里就介紹一種高效的網(wǎng)絡(luò)遠(yuǎn)程備份和鏡象工具-rsync,它可以滿足絕大多數(shù)要求不是特別嚴(yán)格的備份需求。
rsync是類unix系統(tǒng)下的數(shù)據(jù)鏡像備份工具,從軟件的命名上就可以看出來了——remote sync。它的特性如下:
可以鏡像保存整個(gè)目錄樹和文件系統(tǒng)。
可以很容易做到保持原來文件的權(quán)限、時(shí)間、軟硬鏈接等等。
無須特殊權(quán)限即可安裝。
優(yōu)化的流程,文件傳輸效率高。
可以使用rcp、ssh等方式來傳輸文件,當(dāng)然也可以通過直接的socket連接。
支持匿名傳輸,以方便進(jìn)行網(wǎng)站鏡象。
軟件下載
rysnc的主頁地址為:
http://rsync.samba.org/
目前最新版本為2.4.6??梢赃x擇從原始網(wǎng)站下載:http://rsync.samba.org/ftp/rsync/。也可以選擇從本站下載: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
但是需要注意的是必須在服務(wù)器A和B上都安裝rsync,其中A服務(wù)器上是以服務(wù)器模式運(yùn)行rsync,而B上則以客戶端方式運(yùn)行rsync。這樣在web服務(wù)器A上運(yùn)行rsync守護(hù)進(jìn)程,在B上定時(shí)運(yùn)行客戶程序來備份web服務(wù)器A上需要備份的內(nèi)容。
rsync服務(wù)器
1、rsync服務(wù)器的啟動(dòng)
在web服務(wù)器A上需要以守護(hù)進(jìn)程方式來啟動(dòng)rsync服務(wù)器,只需要運(yùn)行:
[root@www rsync-2.4.6]# /usr/local/bin/rsync --daemon
即可啟動(dòng)。rsync默認(rèn)服務(wù)端口為873,服務(wù)器在該端口接收客戶的匿名或者認(rèn)證方式的備份請求。
如果要在啟動(dòng)時(shí)把服務(wù)起來,有幾種不同的方法,比如:
a、加入inetd.conf
編輯/etc/services,加入rsync 873/tcp,指定rsync的服務(wù)端口是873。編加/etc/inetd.conf,加入rsync stream tcp nowait root /bin/rsync rsync --daemon
注:對于xinetd,設(shè)置方法類似。
b、加入rc.local
編輯/etc/rc.d/rc.local,在最后添加:
/usr/local/bin/rsync --daemon
2、rsync的配置
對于rsync服務(wù)器來說,最重要和復(fù)雜的就是它的配置了。rsync服務(wù)器的配置文件為/etc/rsyncd.conf,其控制認(rèn)證、訪問、日志記錄等等。
該文件是由一個(gè)或多個(gè)模塊結(jié)構(gòu)組成。一個(gè)模塊定義以方括弧中的模塊名開始,直到下一個(gè)模塊定義開始或者文件結(jié)束,模塊中包含格式為name = value的參數(shù)定義。每個(gè)模塊其實(shí)就對應(yīng)需要備份的一個(gè)目錄樹,比方說在我們的實(shí)例環(huán)境中,有三個(gè)目錄樹需要備份:/www/、 /home/web_user1/和/home/web_user2/,那么就需要在配置文件中定義三個(gè)模塊,分別對應(yīng)三個(gè)目錄樹。
配置文件是行為單位的,也就是每個(gè)新行都表示一個(gè)新的注釋、模塊定義或者參數(shù)賦值。以#開始的行表示注釋,以"\"結(jié)束的行表示下面一行是該行的繼續(xù)。參數(shù)賦值中等號(hào)后可能是一個(gè)大小寫不敏感的字符串、一個(gè)以trure/false表示的布爾值。
全局參數(shù)
在文件中[modlue]之前的所有參數(shù)都是全局參數(shù),當(dāng)然也可以在全局參數(shù)部分定義模塊參數(shù),這時(shí)候該參數(shù)的值就是所有模塊的默認(rèn)值。
motd file
"motd file"參數(shù)用來指定一個(gè)消息文件,當(dāng)客戶連接服務(wù)器時(shí)該文件的內(nèi)容顯示給客戶,默認(rèn)是沒有motd文件的。
log file
"log file"指定rsync的日志文件,而不將日志發(fā)送給syslog。
pid file
指定rsync的pid文件。
syslog facility
指定rsync發(fā)送日志消息給syslog時(shí)的消息級(jí)別,常見的消息級(jí)別是:uth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, security, sys-log, user, uucp, local0, local1, local2, local3,local4, local5, local6和local7。默認(rèn)值是daemon。
模塊參數(shù)
在全局參數(shù)之后就需要定義一個(gè)或多個(gè)模塊了,模塊中可以定義以下參數(shù):
comment
給模塊指定一個(gè)描述,該描述連同模塊名在客戶連接得到模塊列表時(shí)顯示給客戶。默認(rèn)沒有描述定義。
path
指定該模塊的供備份的目錄樹路徑,該參數(shù)是必須指定的。
use chroot
如果"use chroot"指定為true,那么rsync在傳輸文件以前首先chroot到path參數(shù)所指定的目錄下。這樣做的原因是實(shí)現(xiàn)額外的安全防護(hù),但是缺點(diǎn)是需要以roots權(quán)限,并且不能備份指向外部的符號(hào)連接所指向的目錄文件。默認(rèn)情況下chroot值為true。
max connections
指定該模塊的最大并發(fā)連接數(shù)量以保護(hù)服務(wù)器,超過限制的連接請求將被告知隨后再試。默認(rèn)值是0,也就是沒有限制。
lock file
指定支持max connections參數(shù)的鎖文件,默認(rèn)值是/var/run/rsyncd.lock。
read only
該選項(xiàng)設(shè)定是否允許客戶上載文件。如果為true那么任何上載請求都會(huì)失敗,如果為false并且服務(wù)器目錄讀寫權(quán)限允許那么上載是允許的。默認(rèn)值為true。
list
該選項(xiàng)設(shè)定當(dāng)客戶請求可以使用的模塊列表時(shí),該模塊是否應(yīng)該被列出。如果設(shè)置該選項(xiàng)為false,可以創(chuàng)建隱藏的模塊。默認(rèn)值是true。
uid
該選項(xiàng)指定當(dāng)該模塊傳輸文件時(shí)守護(hù)進(jìn)程應(yīng)該具有的uid,配合gid選項(xiàng)使用可以確定哪些可以訪問怎么樣的文件權(quán)限,默認(rèn)值是"nobody"。
gid
該選項(xiàng)指定當(dāng)該模塊傳輸文件時(shí)守護(hù)進(jìn)程應(yīng)該具有的gid。默認(rèn)值為"nobody"。
exlude
用來指定多個(gè)由空格隔開的多個(gè)模式列表,并將其添加到exclude列表中。這等同于在客戶端命令中使用--exclude來指定模式,不過配置文件中指定的exlude模式不會(huì)傳遞給客戶端,而僅僅應(yīng)用于服務(wù)器。一個(gè)模塊只能指定一個(gè)exlude選項(xiàng),但是可以在模式前面使用"-"和"+"來指定是 exclude還是include。
但是需要注意的一點(diǎn)是該選項(xiàng)有一定的安全性問題,客戶很有可能繞過exlude列表,如果希望確保特定的文件不能被訪問,那就最好結(jié)合uid/gid選項(xiàng)一起使用。
exlude from
指定一個(gè)包含exclude模式的定義的文件名,服務(wù)器從該文件中讀取exlude列表定義。
include
用來指定多個(gè)由空格隔開的多個(gè)rsync并應(yīng)該exlude的模式列表。這等同于在客戶端命令中使用--include來指定模式,結(jié)合 include和 exlude可以定義復(fù)雜的exlude/include規(guī)則。一個(gè)模塊只能指定一個(gè)include選項(xiàng),但是可以在模式前面使用"-"和"+"來指定是 exclude還是include。
include from
指定一個(gè)包含include模式的定義的文件名,服務(wù)器從該文件中讀取include列表定義。
對于選擇Linux 作為應(yīng)用平臺(tái)的的中小型企業(yè)或網(wǎng)站來說,往往面臨如何實(shí)現(xiàn)數(shù)據(jù)遠(yuǎn)程備份或者網(wǎng)站鏡象的問題,雖然有商業(yè)化的備份和鏡象產(chǎn)品可供選擇,但這些產(chǎn)品的價(jià)格往往過于昂貴。因此如何利用自由軟件高效實(shí)現(xiàn)遠(yuǎn)程備份和網(wǎng)站鏡象就成為一個(gè)值得討論的話題。
通過網(wǎng)絡(luò)進(jìn)行遠(yuǎn)程數(shù)據(jù)備份或者網(wǎng)站鏡象的最簡單的方法就是使用wget,但是這種方式每次都需要將所有數(shù)據(jù)都重新在網(wǎng)絡(luò)上傳輸一遍,而不考慮哪些文件是經(jīng)過更新的,因此效率非常低下。尤其在需要備份的數(shù)據(jù)量很大的時(shí)候,往往需要花費(fèi)數(shù)個(gè)小時(shí)來在網(wǎng)絡(luò)上進(jìn)行數(shù)據(jù)傳輸。
因此這里就介紹一種高效的網(wǎng)絡(luò)遠(yuǎn)程備份和鏡象工具-rsync,它可以滿足絕大多數(shù)要求不是特別嚴(yán)格的備份需求。
rsync是類unix系統(tǒng)下的數(shù)據(jù)鏡像備份工具,從軟件的命名上就可以看出來了——remote sync。它的特性如下:
可以鏡像保存整個(gè)目錄樹和文件系統(tǒng)。
可以很容易做到保持原來文件的權(quán)限、時(shí)間、軟硬鏈接等等。
無須特殊權(quán)限即可安裝。
優(yōu)化的流程,文件傳輸效率高。
可以使用rcp、ssh等方式來傳輸文件,當(dāng)然也可以通過直接的socket連接。
支持匿名傳輸,以方便進(jìn)行網(wǎng)站鏡象。
軟件下載
rysnc的主頁地址為:
http://rsync.samba.org/
目前最新版本為2.4.6??梢赃x擇從原始網(wǎng)站下載:http://rsync.samba.org/ftp/rsync/。也可以選擇從本站下載: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
但是需要注意的是必須在服務(wù)器A和B上都安裝rsync,其中A服務(wù)器上是以服務(wù)器模式運(yùn)行rsync,而B上則以客戶端方式運(yùn)行rsync。這樣在web服務(wù)器A上運(yùn)行rsync守護(hù)進(jìn)程,在B上定時(shí)運(yùn)行客戶程序來備份web服務(wù)器A上需要備份的內(nèi)容。
rsync服務(wù)器
1、rsync服務(wù)器的啟動(dòng)
在web服務(wù)器A上需要以守護(hù)進(jìn)程方式來啟動(dòng)rsync服務(wù)器,只需要運(yùn)行:
[root@www rsync-2.4.6]# /usr/local/bin/rsync --daemon
即可啟動(dòng)。rsync默認(rèn)服務(wù)端口為873,服務(wù)器在該端口接收客戶的匿名或者認(rèn)證方式的備份請求。
如果要在啟動(dòng)時(shí)把服務(wù)起來,有幾種不同的方法,比如:
a、加入inetd.conf
編輯/etc/services,加入rsync 873/tcp,指定rsync的服務(wù)端口是873。編加/etc/inetd.conf,加入rsync stream tcp nowait root /bin/rsync rsync --daemon
注:對于xinetd,設(shè)置方法類似。
b、加入rc.local
編輯/etc/rc.d/rc.local,在最后添加:
/usr/local/bin/rsync --daemon
2、rsync的配置
對于rsync服務(wù)器來說,最重要和復(fù)雜的就是它的配置了。rsync服務(wù)器的配置文件為/etc/rsyncd.conf,其控制認(rèn)證、訪問、日志記錄等等。
該文件是由一個(gè)或多個(gè)模塊結(jié)構(gòu)組成。一個(gè)模塊定義以方括弧中的模塊名開始,直到下一個(gè)模塊定義開始或者文件結(jié)束,模塊中包含格式為name = value的參數(shù)定義。每個(gè)模塊其實(shí)就對應(yīng)需要備份的一個(gè)目錄樹,比方說在我們的實(shí)例環(huán)境中,有三個(gè)目錄樹需要備份:/www/、 /home/web_user1/和/home/web_user2/,那么就需要在配置文件中定義三個(gè)模塊,分別對應(yīng)三個(gè)目錄樹。
配置文件是行為單位的,也就是每個(gè)新行都表示一個(gè)新的注釋、模塊定義或者參數(shù)賦值。以#開始的行表示注釋,以"\"結(jié)束的行表示下面一行是該行的繼續(xù)。參數(shù)賦值中等號(hào)后可能是一個(gè)大小寫不敏感的字符串、一個(gè)以trure/false表示的布爾值。
全局參數(shù)
在文件中[modlue]之前的所有參數(shù)都是全局參數(shù),當(dāng)然也可以在全局參數(shù)部分定義模塊參數(shù),這時(shí)候該參數(shù)的值就是所有模塊的默認(rèn)值。
motd file
"motd file"參數(shù)用來指定一個(gè)消息文件,當(dāng)客戶連接服務(wù)器時(shí)該文件的內(nèi)容顯示給客戶,默認(rèn)是沒有motd文件的。
log file
"log file"指定rsync的日志文件,而不將日志發(fā)送給syslog。
pid file
指定rsync的pid文件。
syslog facility
指定rsync發(fā)送日志消息給syslog時(shí)的消息級(jí)別,常見的消息級(jí)別是:uth, authpriv, cron, daemon, ftp, kern, lpr, mail, news, security, sys-log, user, uucp, local0, local1, local2, local3,local4, local5, local6和local7。默認(rèn)值是daemon。
模塊參數(shù)
在全局參數(shù)之后就需要定義一個(gè)或多個(gè)模塊了,模塊中可以定義以下參數(shù):
comment
給模塊指定一個(gè)描述,該描述連同模塊名在客戶連接得到模塊列表時(shí)顯示給客戶。默認(rèn)沒有描述定義。
path
指定該模塊的供備份的目錄樹路徑,該參數(shù)是必須指定的。
use chroot
如果"use chroot"指定為true,那么rsync在傳輸文件以前首先chroot到path參數(shù)所指定的目錄下。這樣做的原因是實(shí)現(xiàn)額外的安全防護(hù),但是缺點(diǎn)是需要以roots權(quán)限,并且不能備份指向外部的符號(hào)連接所指向的目錄文件。默認(rèn)情況下chroot值為true。
max connections
指定該模塊的最大并發(fā)連接數(shù)量以保護(hù)服務(wù)器,超過限制的連接請求將被告知隨后再試。默認(rèn)值是0,也就是沒有限制。
lock file
指定支持max connections參數(shù)的鎖文件,默認(rèn)值是/var/run/rsyncd.lock。
read only
該選項(xiàng)設(shè)定是否允許客戶上載文件。如果為true那么任何上載請求都會(huì)失敗,如果為false并且服務(wù)器目錄讀寫權(quán)限允許那么上載是允許的。默認(rèn)值為true。
list
該選項(xiàng)設(shè)定當(dāng)客戶請求可以使用的模塊列表時(shí),該模塊是否應(yīng)該被列出。如果設(shè)置該選項(xiàng)為false,可以創(chuàng)建隱藏的模塊。默認(rèn)值是true。
uid
該選項(xiàng)指定當(dāng)該模塊傳輸文件時(shí)守護(hù)進(jìn)程應(yīng)該具有的uid,配合gid選項(xiàng)使用可以確定哪些可以訪問怎么樣的文件權(quán)限,默認(rèn)值是"nobody"。
gid
該選項(xiàng)指定當(dāng)該模塊傳輸文件時(shí)守護(hù)進(jìn)程應(yīng)該具有的gid。默認(rèn)值為"nobody"。
exlude
用來指定多個(gè)由空格隔開的多個(gè)模式列表,并將其添加到exclude列表中。這等同于在客戶端命令中使用--exclude來指定模式,不過配置文件中指定的exlude模式不會(huì)傳遞給客戶端,而僅僅應(yīng)用于服務(wù)器。一個(gè)模塊只能指定一個(gè)exlude選項(xiàng),但是可以在模式前面使用"-"和"+"來指定是 exclude還是include。
但是需要注意的一點(diǎn)是該選項(xiàng)有一定的安全性問題,客戶很有可能繞過exlude列表,如果希望確保特定的文件不能被訪問,那就最好結(jié)合uid/gid選項(xiàng)一起使用。
exlude from
指定一個(gè)包含exclude模式的定義的文件名,服務(wù)器從該文件中讀取exlude列表定義。
include
用來指定多個(gè)由空格隔開的多個(gè)rsync并應(yīng)該exlude的模式列表。這等同于在客戶端命令中使用--include來指定模式,結(jié)合 include和 exlude可以定義復(fù)雜的exlude/include規(guī)則。一個(gè)模塊只能指定一個(gè)include選項(xiàng),但是可以在模式前面使用"-"和"+"來指定是 exclude還是include。
include from
指定一個(gè)包含include模式的定義的文件名,服務(wù)器從該文件中讀取include列表定義。
相關(guān)文章
Linux基礎(chǔ):如何找出你的系統(tǒng)所支持的最大內(nèi)存
這篇文章主要介紹了Linux基礎(chǔ):如何找出你的系統(tǒng)所支持的最大內(nèi)存,需要的朋友可以參考下2015-04-04centos7修改網(wǎng)關(guān)和配置ip的方法示例
這篇文章主要介紹了centos7修改網(wǎng)關(guān)和配置ip的方法示例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08虛擬機(jī)安裝Linux rhel7.3操作系統(tǒng)(具體步驟)
這篇文章主要介紹了虛擬機(jī)安裝Linux rhel7.3操作系統(tǒng)(具體步驟),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-10-10Linux date 時(shí)間設(shè)置同步命令分享
Linux服務(wù)器運(yùn)行久時(shí),系統(tǒng)時(shí)間就會(huì)存在一定的誤差,一般情況下可以使用date命令進(jìn)行時(shí)間設(shè)置,但在做數(shù)據(jù)庫集群分片等復(fù)雜操作時(shí)對多臺(tái)機(jī)器的時(shí)間差是有要求的,此時(shí)就需要使用ntpdate進(jìn)行時(shí)間同步。2018-04-04win8下XAMPP中Apache模塊無效(apache無法打開)的解決方法
win8下系統(tǒng)默認(rèn)占用80端口,導(dǎo)致apache無法打開,下面是具體的解決方法:首先以管理員權(quán)限運(yùn)行c:\windows\system32\cmd.exe.....感興趣的朋友可以參考下哈,希望對大家有所幫助2013-07-07CentOS下采用Crontab實(shí)現(xiàn)PHP腳本定時(shí)任務(wù)
本篇文章主要介紹了CentOS下采用Crontab實(shí)現(xiàn)PHP腳本定時(shí)任務(wù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-05-05