- 論壇徽章:
- 0
|
使用 rsync (全自動(dòng)網(wǎng)絡(luò)備份法)
一. 簡(jiǎn)介
rsync 本來(lái)是用以取代 rcp 的一個(gè)工具, 它目前是由
rsync.samba.org
維護(hù).
rsync 使用所謂的 "rsync 算法", 提供一個(gè)非?焖俚臋n案?jìng)鬏敺椒? 使 local 和遠(yuǎn)程二部主機(jī)之間的檔案達(dá)到同步, 它主要是傳送二個(gè)檔案的異動(dòng)部份, 而非每次都整份傳送, 因此速度相當(dāng)?shù)乜?
由于 rsync 可以搭配 rsh 或 ssh 甚至使用 daemon 模式, 因此許多人拿 rsync 當(dāng)做一個(gè)優(yōu)異的備份工具來(lái)使用. (拿來(lái) update ISO 檔也很好用)
本文將簡(jiǎn)單介紹運(yùn)用 rsync 備份網(wǎng)絡(luò)主機(jī)檔案的基本方法, 供各位伙伴參考.
rsync 有 6 種不同的用法, 如 local 拷貝備份, local 檔案藉由 rsh/ssh 傳送至遠(yuǎn)方主機(jī).... 在此我們主要介紹 rsync 的 daemon 模式.
首先, 先給個(gè)簡(jiǎn)單的定義: 如果一臺(tái)主機(jī)跑 rsync daemon 模式, 我們就稱這臺(tái)機(jī)器為一 rsync Server, 或者說(shuō)這臺(tái)主機(jī)是一臺(tái)備份主機(jī)( Backup Server).
備份主機(jī)會(huì)開啟一個(gè) 873 的服務(wù)信道(port), 等待對(duì)方 rsync 連接.
連接時(shí), rsync Server 會(huì)檢查密碼是否相符, 若通過(guò)密碼查核, 則開始進(jìn)行檔案?jìng)鬏?
第一次連通完成時(shí), 會(huì)把整份檔案?jìng)鬏斠淮? 下一次就只傳送二個(gè)檔案之間異動(dòng)的部份.
藉由上述方法, 我們可以設(shè)立多部備份主機(jī), 使網(wǎng)絡(luò)主機(jī)上重要的檔案能分散至數(shù)部主機(jī)中, 以分散風(fēng)險(xiǎn).
一旦完成備份, 我們可以對(duì)這些備份主機(jī)再做進(jìn)一步的儲(chǔ)存動(dòng)作, 如使用
tar
或
Ghost
, 把檔案?jìng)浞莸礁(wěn)固,更能長(zhǎng)久保存的設(shè)備上, 如 MO 或 燒錄設(shè)備.
以上, 便是整個(gè)運(yùn)作的想法, 底下, 我們來(lái)加以實(shí)作.
二. 安裝法
rsync 目前最新版是 2.5.5, 可以到
rsync.samba.org
下載.
安裝 rsync 十分簡(jiǎn)單, 以下這道指令即可搞定:
./configure && make && make install
若您使用 rpm 套件, 只要下 rpm -ivh rsync*.rpm 即可
它的設(shè)定文件位置在 /etc/rsyncd.conf
其實(shí) RedHat / Mandrake 等 Linux 套件, 默認(rèn)值都已幫各位安裝好 rsync 了.
三. 設(shè)定 rsync server: (假設(shè)這臺(tái)主機(jī)名稱為 192.168.0.2)
rsync server 端要設(shè)定以下四項(xiàng):
規(guī)劃建立備份目錄區(qū)
設(shè)定: /etc/xinetd.d/rsync
設(shè)定: /etc/rsyncd.conf
設(shè)定: 密碼文件
依次說(shuō)明如下:
1. 規(guī)劃建立備份目錄區(qū):
建議您準(zhǔn)備一個(gè)容量較大且獨(dú)立的分割區(qū), 并在其中開好備份目錄, 如此 /bk/server
2. 設(shè)定 /etc/xinetd.d/rsync, 簡(jiǎn)單模板如下:
# default: off# description: The rsync server is a good addition to am ftp server, as it \# allows crc checksumming etc.service rsync{ disable = no socket_type = stream wait = no user = root server = /usr/bin/rsync server_args = --daemon log_on_failure += USERID}
然后下 service xinetd restart, 使上述設(shè)定生效.
上述, 主要是要打開 rsync 這個(gè) daemon, 一旦有 rsync client 要連接時(shí), xinetd 會(huì)把它轉(zhuǎn)介給 rsyncd (跑 port 873).
3. 設(shè)定 /etc/rsyncd.conf :
以下區(qū)塊, 代表開放給某一臺(tái) rsync client 主機(jī)的設(shè)定, 簡(jiǎn)單模板如下:
secrets file = /etc/rsyncd.secretsread only = yeslist=yesuid = nobodygid = nobodymax connections = 4pid file = /var/run/rsyncd.pidlock file = /var/run/rsync.locklog file = /var/log/rsyncd.log
.
以下模板, 代表二個(gè)主機(jī) web備份服務(wù)器 及 tomcat備份服務(wù)器 欲備份進(jìn)來(lái):
[www]comment = tranlate www from 158path = /usr/local/apache2/htdocs/www auth users = dev uid = root gid = root secrets file = /etc/rsyncd.secrets read only = no [tomcat] comment = tranlate tomcat from 158path = /usr/local/tomcat-5.0.28/webapps/ROOT auth users = dev uid = root gid = root secrets file = /etc/rsyncd.secretsread only = no
比較重要的解釋:
[www] 代表欲備份的模塊
comment代表欲備份的主機(jī)代號(hào), 名稱可自訂.
path 用來(lái)設(shè)定備份文件要存放在那一個(gè)目錄? 請(qǐng)先用 mkdir 開設(shè)好, 名稱可自訂.
auth users 代表授權(quán)的帳號(hào), 名稱可自訂.
secrets file 代表儲(chǔ)存帳號(hào)密碼的密碼文件, 其放置的路徑文件名.
當(dāng)然, 這臺(tái)備份主機(jī), 可以容納許多 rsync client 連接, 只要在 rsyncd.conf 中設(shè)妥對(duì)應(yīng)的區(qū)塊即可
4. 設(shè)定密碼文件:
rsyncd.secrets 的內(nèi)容很簡(jiǎn)單, 格式為 帳號(hào):密碼
如以下例子:
dev:123456
注意! 上述設(shè)定只是一個(gè)范例, 請(qǐng)務(wù)必自訂一組, 千萬(wàn)不要直接套用.
接下來(lái), 要將 rsyncd.secrets 這個(gè)密碼文件的檔案屬性設(shè)為 root 擁有, 且權(quán)限要設(shè)為 600, 否則無(wú)法備份成功!
因此, 請(qǐng)下:
chown root.root rsyncd.secrets
chmod 600 rsyncd.secrets
至此, rsync server 這端已設(shè)定完成, 若欲查看備份記錄, 可參考 /var/log/rsyncd.log 這個(gè)檔案.
接下來(lái)是 client 端(即欲備份的網(wǎng)絡(luò)主機(jī)) 的設(shè)定.
四. 設(shè)定 rsync client (假設(shè)這臺(tái)主機(jī) IP 為 : 192.168.0.3)
步驟:
設(shè)定密碼文件
測(cè)試 rsync 執(zhí)行指令
將 rsync 指令放入工作排程 (crontab)
另外, 假設(shè) 192.168.0.2 這臺(tái)主機(jī)是網(wǎng)絡(luò)主機(jī), 今打算把 /usr/local/apache 這個(gè)目錄加以備份至 backup server 192.168.0.3),
1. 假設(shè)把密碼文件放在 /root/rsyncd.secrets, 內(nèi)容只要含有密碼一行即可:
123456
注意: rsyncd.secrets 的權(quán)限屬性必須設(shè)為 600
2. 測(cè)試指令是否可以成功?
/usr/bin/rsync –vzrtopg --password-file=/root/rsyncd.secrets root@61.140.243.158::tomcat /usr/local/tomcat-5.5.15/webapps/ROOT
若出現(xiàn)傳輸目錄檔案的畫面, 即表示測(cè)試成功.
3. 置入工作排程, 假設(shè)每天凌晨 5 點(diǎn)開始備份:
crontab -u root -e
0 5 * * * /usr/bin/rsync -vzrtopg --password-file=/root/rsyncd.secrets root@61.140.243.158::tomcat /usr/local/tomcat-5.5.15/webapps/ROOT
若您有其它目錄(如 /www)要備份, 則如法泡制:
20 5 * * * /usr/bin/rsync -vzrtopg --password-file=/root/rsyncd.secrets root@61.140.243.158::www /usr/local/apache2/htdocs/www
若您覺得備份一臺(tái) Backup Server 不夠, 可再按上述方法, 自行增加任意多臺(tái) Backup Server, 以分散風(fēng)險(xiǎn)!
像這樣把備份的工作全部自動(dòng)化, 真是輕松愉快, 大大地減低備份工作煩人的壓力!!
五. 安全性:
建議使用 ipchains 或 iptables 指令, 來(lái)限制 rsync client 的聯(lián)機(jī)范圍, 例子如下:
ipchains -A input -p tcp -s ! 192.168.0.3 --dport 873 -j DENY
或
iptables -A INPUT -p tcp -s ! 192.168.0.3 --dport 873 -j DROP
如此, 只有 192.168.0.3 這個(gè) client IP 能連入這臺(tái) rsync server.
ipchains 及 iptables 的用法, 可參考CU里的教程。
PS:另外 rsync 可以結(jié)合 ssh 或 ssh2, 使安全性更加提高. 詳情請(qǐng)自行查閱 rsync / ssh / ssh2 的 manpage.
具體步驟如下:
在A上生成隱藏文件夾/root/.ssh ,在里面生成密鑰對(duì)
]#cd /root/.ssh
]#ssh-keygen -d
Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
root@rsync-server.com
]#
2. 在/root/.ssh內(nèi)已經(jīng)生成id_dsa與id_dsa.pub(分別為私鑰和公鑰)
]#scp id_dsa.pub B的IP:/root/.ssh/authorized_keys
B服務(wù)器要求輸入登錄密碼驗(yàn)證身份,成功后在B server的/root/.ssh目錄里面生成authorized_keys(公鑰)
測(cè)試:在A上輸入 ssh B的IP A可以無(wú)需密碼驗(yàn)證就登錄進(jìn)B(不過(guò)這樣的安全性很差)
然后的備份就簡(jiǎn)單了:
在服務(wù)器B,建立以下腳本:
#!/bin/bash
/usr/bin/rsync -vzrtopg -e ssh --progress --delete 192.168.0.2 :/usr/local/tomcat-5.0.28/webapps/ROOT/ /usr/local/tomcat-5.0.28/webapps/ROOT/
六. 參考文件:
rsync 的一些備份妙法, 請(qǐng)參考:
http://rsync.samba.org/examples.html
rsync有很多功能選項(xiàng),下面就對(duì)介紹一下常用的選項(xiàng):
rsync的命令格式可以為:
1. rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST
2. rsync [OPTION]... [USER@]HOST:SRC DEST
3. rsync [OPTION]... SRC [SRC]... DEST
4. rsync [OPTION]... [USER@]HOST::SRC [DEST]
5. rsync [OPTION]... SRC [SRC]... [USER@]HOST::DEST
6. rsync [OPTION]... rsync://[USER@]HOST[:PORT]/SRC [DEST]
rsync有六種不同的工作模式:
1. 拷貝本地文件;當(dāng)SRC和DES路徑信息都不包含有單個(gè)冒號(hào)":"分隔符時(shí)就啟動(dòng)這種工作模式。
2.使用一個(gè)遠(yuǎn)程shell程序(如rsh、ssh)來(lái)實(shí)現(xiàn)將本地機(jī)器的內(nèi)容拷貝到遠(yuǎn)程機(jī)器。當(dāng)DST
路徑地址包含單個(gè)冒號(hào)":"分隔符時(shí)啟動(dòng)該模式。
3.使用一個(gè)遠(yuǎn)程shell程序(如rsh、ssh)來(lái)實(shí)現(xiàn)將遠(yuǎn)程機(jī)器的內(nèi)容拷貝到本地機(jī)器。當(dāng)SRC
地址路徑包含單個(gè)冒號(hào)":"分隔符時(shí)啟動(dòng)該模式。
4. 從遠(yuǎn)程rsync服務(wù)器中拷貝文件到本地機(jī)。當(dāng)SRC路徑信息包含"::"分隔符時(shí)啟動(dòng)該模式。
5. 從本地機(jī)器拷貝文件到遠(yuǎn)程rsync服務(wù)器中。當(dāng)DST路徑信息包含"::"分隔符時(shí)啟動(dòng)該模式。
6. 列遠(yuǎn)程機(jī)的文件列表。這類似于rsync傳輸,不過(guò)只要在命令中省略掉本地機(jī)信息即可。
rsync 的教學(xué)文件:
A Tutorial on Using rsync
rsync 的 FAQ
(具體看man rsync)
七. 在我配置的過(guò)程出現(xiàn)的一些錯(cuò)誤,和大家分享一下
1.
@ERROR: auth failed on module xxxxx
rsync: connection unexpectedly closed (90 bytes read so far)rsync error: error in rsync protocol data stream (code 12) at io.c(150)
A: 這是因?yàn)槊艽a設(shè)錯(cuò)了, 無(wú)法登入成功, 請(qǐng)?jiān)贆z查一下 rsyncd.secrets 中的密碼設(shè)定, 二端是否一致?
2.
password file must not be other-accessible
continuing without password file
Password:
A: 這表示 rsyncd.secrets 的檔案權(quán)限屬性不對(duì), 應(yīng)設(shè)為 600
請(qǐng)下 chmod 600 rsyncd.secrets
3.
@ERROR: chroot failed
rsync: connection unexpectedly closed (75 bytes read so far)rsync error: error in rsync protocol data stream (code 12) at io.c(150)
A: 這通常是您的 rsyncd.conf 中
的 path 路徑所設(shè)的那個(gè)目錄并不存在所致.
請(qǐng)先用 mkdir 開設(shè)好備份目錄.
4. Q: 出現(xiàn)以下這個(gè)訊息, 是怎么一回事?
rsync: failed to connect to 61.140.243.160: No route to host (113)
rsync error: error in socket IO (code 10) at clientserver.c(94)
A:這通常是你的防火墻問(wèn)題
/etc/init.d/iptables stop 然后在試試看看
隨后記得設(shè)置你的iptables 然后把防火墻打開
本文來(lái)自ChinaUnix博客,如果查看原文請(qǐng)點(diǎn):http://blog.chinaunix.net/u/16615/showart_92783.html |
|