我們在使用服務(wù)器發(fā)布我們的網(wǎng)站的時(shí)候,通常要考慮到文件的備份,而文件的備份比較高效的備份是增加備份,rsync軟件就是這樣的一個(gè)工具。為了實(shí)現多個(gè)服務(wù)器負載均衡,我們需要這幾個(gè)服務(wù)器之間進(jìn)行數據同步,而rsync軟件也能勝任,下面我們來(lái)介紹如何架設rsync服務(wù)器來(lái)達到文件增量備份和數據同步的功能。
rsync 是一個(gè)快速增量文件傳輸工具,它可以用于在同一主機備份內部的備分,我們還可以把它作為不同主機網(wǎng)絡(luò )備份工具之用。本文主要講述的是如何自架rsync服務(wù)器,以實(shí)現文件傳輸、備份和鏡像。相對tar和wget來(lái)說(shuō),rsync 也有其自身的優(yōu)點(diǎn),比如速度快、安全、高效。
在CentOS服務(wù)器,我們可以執行以下命令安裝
對于debian、ubuntu服務(wù)器,則是以下命令
下面我們將涉及到三個(gè)文件 rsyncd.conf,rsyncd.secrets 和rsyncd.motd。
rsyncd.conf 是rsync服務(wù)器主要配置文件。
rsyncd.secrets是登錄rsync服務(wù)器的密碼文件。
rsyncd.motd是定義rysnc 服務(wù)器信息的,也就是用戶(hù)登錄信息。
下面我們分別建立這三個(gè)文件。
注:在/etc目錄下創(chuàng )建一個(gè)rsyncd的目錄,我們用來(lái)存放rsyncd.conf 和rsyncd.secrets文件;
注:創(chuàng )建rsyncd.conf ,這是rsync服務(wù)器的配置文件;
注:創(chuàng )建rsyncd.secrets ,這是用戶(hù)密碼文件;
注:為了密碼的安全性,我們把權限設為600;
注:創(chuàng )建rsyncd.motd文件,這是定義服務(wù)器信息的文件。
下一就是我們修改 rsyncd.conf 和rsyncd.secrets 和rsyncd.motd 文件的時(shí)候了。
rsyncd.conf文件內容:
密碼文件:/etc/rsyncd/rsyncd.secrets的內容格式;
注: linuxsir是系統用戶(hù),這里的密碼值得注意,為了安全,你不能把系統用戶(hù)的密碼寫(xiě)在這里。比如你的系統用戶(hù) linuxsir 密碼是 abcdefg ,為了安全,你可以讓rsync 中的linuxsir 為 222222 。這和samba的用戶(hù)認證的密碼原理是差不多的;
rsyncd.motd 文件;
它是定義rysnc 服務(wù)器信息的,也就是用戶(hù)登錄信息。比如讓用戶(hù)知道這個(gè)服務(wù)器是誰(shuí)提供的等;類(lèi)似ftp服務(wù)器登錄時(shí),我們所看到的 linuxsir.org ftp ……。 當然這在全局定義變量時(shí),并不是必須的,你可以用#號注掉,或刪除;我在這里寫(xiě)了一個(gè) rsyncd.motd的內容為:
注:告訴進(jìn)程寫(xiě)到 /var/run/rsyncd.pid 文件中;
注:指定運行端口,默認是873,您可以自己指定;
注:指定服務(wù)器IP地址;
注:服務(wù)器端傳輸文件時(shí),要發(fā)哪個(gè)用戶(hù)和用戶(hù)組來(lái)執行,默認是nobody。 如果用nobody 用戶(hù)和用戶(hù)組,可能遇到權限問(wèn)題,有些文件從服務(wù)器上拉不下來(lái)。所以我就偷懶,為了方便,用了root 。不過(guò)您可以在定義要同步的目錄時(shí)定義的模塊中指定用戶(hù)來(lái)解決權限的問(wèn)題。
用chroot,在傳輸文件之前,服務(wù)器守護程序在將chroot 到文件系統中的目錄中,這樣做的好處是可能保護系統被安裝漏洞侵襲的可能。缺點(diǎn)是需要超級用戶(hù)權限。另外對符號鏈接文件,將會(huì )排除在外。也就是說(shuō),你在rsync服務(wù)器上,如果有符號鏈接,你在備份服務(wù)器上運行客戶(hù)端的同步數據時(shí),只會(huì )把符號鏈接名同步下來(lái),并不會(huì )同步符號鏈接的內容;這個(gè)需要自己來(lái)嘗試;
注:read only 是只讀選擇,也就是說(shuō),不讓客戶(hù)端上傳文件到服務(wù)器上。還有一個(gè) write only選項,自己嘗試是做什么用的吧;
注:在您可以指定單個(gè)IP,也可以指定整個(gè)網(wǎng)段,能提高安全性。格式是ip 與ip 之間、ip和網(wǎng)段之間、網(wǎng)段和網(wǎng)段之間要用空格隔開(kāi);
注:客戶(hù)端最多連接數;
注:motd file 是定義服務(wù)器信息的,要自己寫(xiě) rsyncd.motd 文件內容。當用戶(hù)登錄時(shí)會(huì )看到這個(gè)信息。
注:rsync 服務(wù)器的日志;
注:這是傳輸文件的日志;
注:模塊,它為我們提供了一個(gè)鏈接的名字,鏈接到哪呢,在本模塊中,鏈接到了/home目錄;要用[name] 形式;
注:指定文件目錄所在位置,這是必須指定的;
注:認證用戶(hù)是linuxsir ,是必須在 服務(wù)器上存在的用戶(hù);
注:list 意思是把rsync 服務(wù)器上提供同步數據的目錄在服務(wù)器上模塊是否顯示列出來(lái)。默認是yes 。如果你不想列出來(lái),就no ;如果是no是比較安全的,至少別人不知道你的服務(wù)器上提供了哪些目錄。你自己知道就行了;
注:忽略IO錯誤,詳細的請查文檔;
注:密碼存在哪個(gè)文件;
注:注釋可以自己定義,寫(xiě)什么都行,寫(xiě)點(diǎn)相關(guān)的內容就行;
注:exclude 是排除的意思,也就是說(shuō),要把/home目錄下的beinan和samba 排除在外; beinan/和samba/目錄之間有空格分開(kāi) ;
啟動(dòng)rsync服務(wù)器
啟動(dòng)rsync 服務(wù)器相當簡(jiǎn)單,–daemon 是讓rsync 以服務(wù)器模式運行;
rsync服務(wù)器和防火墻
Linux 防火墻是用iptables,所以我們至少在服務(wù)器端要讓你所定義的rsync 服務(wù)器端口通過(guò),客戶(hù)端上也應該讓通過(guò)。
查看一下防火墻是不是打開(kāi)了 873端口;
Password: 這里要輸入linuxsir的密碼,是服務(wù)器端提供的,在前面的例子中,我們用的是 222222,輸入的密碼并不顯示出來(lái);輸好后就回車(chē);
注: 這個(gè)命令的意思就是說(shuō),用linuxsir 用戶(hù)登錄到服務(wù)器上,把linuxsirhome數據,同步到本地目錄linuxsirhome上。當然本地的目錄是可以你自己定義的,比如 linuxsir也是可以的;當你在客戶(hù)端上,當前操作的目錄下沒(méi)有linuxsirhome這個(gè)目錄時(shí),系統會(huì )自動(dòng)為你創(chuàng )建一個(gè);當存在linuxsirhome這個(gè)目錄中,你要注意它的寫(xiě)權限。
說(shuō)明:
-a 參數,相當于-rlptgoD,-r 是遞歸 -l 是鏈接文件,意思是拷貝鏈接文件;-p 表示保持文件原有權限;-t 保持文件原有時(shí)間;-g 保持文件原有用戶(hù)組;-o 保持文件原有屬主;-D 相當于塊設備文件;
-z 傳輸時(shí)壓縮;
-P 傳輸進(jìn)度;
-v 傳輸時(shí)的進(jìn)度等信息,和-P有點(diǎn)關(guān)系,自己試試??梢钥次臋n;
這回我們引入一個(gè) –delete 選項,表示客戶(hù)端上的數據要與服務(wù)器端完全一致,如果 linuxsirhome目錄中有服務(wù)器上不存在的文件,則刪除。最終目的是讓linuxsirhome目錄上的數據完全與服務(wù)器上保持一致;用的時(shí)候要小心點(diǎn),最好不要把已經(jīng)有重要數所據的目錄,當做本地更新目錄,否則會(huì )把你的數據全部刪除;
這次我們加了一個(gè)選項 –password-file=rsync.password ,這是當我們以linuxsir用戶(hù)登錄rsync服務(wù)器同步數據時(shí),密碼將讀取 rsync.password 這個(gè)文件。這個(gè)文件內容只是linuxsir用戶(hù)的密碼。我們要如下做;
注: 這樣就不需要密碼了;其實(shí)這是比較重要的,因為服務(wù)器通過(guò)crond 計劃任務(wù)還是有必要的;
編輯crontab
crontab -e
加入如下代碼:
表示每天0點(diǎn)10分執行后面的命令。更多crontab用法請參考
http://www.centos.bz/2011/03/auto-run-task-crontab/
參考文章:http://www.linuxsir.org/main/?q=node/256
轉載請注明文章來(lái)源:http://www.centos.bz/2011/06/rsync-server-setup/
聯(lián)系客服