*奇想西卡*

« [遊記] 台北燈會 | Main | [freebsd] 更新ports »

18 二月, 2006

[freebsd] 異地備援好東西 rsync

Freebsd — 作者 segaa @ 22:45
資料要安全最好可以做到在不同主機上異地備援,而rsync可以做到定時將資料傳送出去,還可以ssh加密與並可以比對資料是否重複或是已經刪除,只傳送新的部份,壓縮後再傳送減少網路的用量 ... 真是挺方便的 ^____^

以下引用別人的資料 ^^;;


> 用rsync?网站?行?像?份> http://www.xfocus.net/articles/200107/214.html> http://203.68.102.40/techdoc/rsync.htm

http://www.weithenn.idv.tw/cgi-bin/wiki.pl/Rsync-
%e9%81%94%e6%88%90%e8%b3%87%e6%96%99%e5%90%8c%e6%ad%a5

{ http://segaa.idv.tw/u/DX0O }

Rsync-達成資料同步【前言】

本為用來取代 rcp 的一個工具,目前由rsync.samba.org維護,rs
ync 使用 "rsync 演算法", 使 local 和遠端二部主機之間的檔案
快速達到資料同步,由於它主要是傳送"異動"部份,而非每次都整份
傳送所以同步速度相當地快,且 rsync 可搭配rsh、 ssh 甚至使用 d
aemon 模式。

當一台主機跑 rsync daemon 模式,即為 rsync Server(也就是 B
ackup Server),備份主機會開啟一個 873 的服務通道(port),等待
rsync client連接,連接時 rsync Server 會檢查密碼是否正確若通
過密碼查核,便開始進行檔案傳輸.第一次連通會把整份檔案傳輸一
次,下一次就只傳送資料之間異動的部份。

【作業環境】

FreeBSD 5.2-RELEASE (rsync server、client)

rsync-2.6.0

【安裝及設定】

Rsync Server設定

Step1.安裝rsync

#cd /usr/ports/net/rsync //切換到安裝路徑

#make install clean //安裝並清除安裝過程中不必要的檔案

Step2.規劃建立備份目錄區

#mkdir /home/backup/web

//依個人習慣建立備份目錄(owner及group需配合web module設定)

Step3.設定rsyncd.conf

修改rsyncd.conf設定檔

#vi /usr/local/etc/rsyncd.conf

內容如下,若要同時有二個以上rsync client要備份到rsync server則依此module設定自行增加即可

###backup config### //註解

[web]//module name
comment = backup dmz web //說明
path = /usr/home/backup/web //存放備份資料的目錄
auth users = weithenn //認證帳號(也就是
等一下要設在rsyncd.secrets的帳號)
uid = nobody //以uid nobody來啟
動rsync server
gid = nogroup //以gid nogroup來
啟動rsync server
secrets file = /usr/local/etc/rsyncd.secrets //
密碼檔存放路徑
read only = no

dont compress = *.gz *.tgz *.zip *.z *.rpm *.de
b *.iso *.bz2 *.tbz //不要對列出附檔名之檔案做壓縮

Step4.建立rsyncd.secrets

建立rsyncd.secrets內容如下

#vi rsyncd.secrets weithenn:123456789
//id:pwd(自行設定帳號、密碼)

權限記得改為600,不然備份會出現問題

#chmod 600 rsyncd.secrets

Step5.修改rc.conf

#vi /etc/rc.conf //修改rc.conf內容

增加如下一行內容

rsyncd_enable="YES" //重開機會自動啟動rsync

Step6.啟動rsync服務

修改rsync.sh內容使Rsync跑ipv4

#vi /usr/local/etc/rc.d/rsyncd.sh

command_args="--daemon
" //預設值(run IPv6)

command_args="-4 --daemon"
//run IPv4

啟動rsync服務

#/usr/local/etc/rc.d/rsyncd.sh start

確定rsync跑tcp4及打開873 port

#sockstat |grep rsync

root rsync
97328 4 tcp4 *:873 *:*

Rsync Client設定

Step1.安裝rsync

切換到安裝路徑,執行安裝並清除安裝過程中不必要的檔案

#cd /usr/ports/net/rsync #make install clean

Step2.建立rsyncd.secrets

建立rsyncd.secrets內容如下(只需密碼,不需帳號)

#vi rsyncd.secrets 123456789 //pwd
(自行設定密碼需與rsync server的一樣哦)

權限記得改為600,不然備份會出現問題

#chmod 600 rsyncd.secrets

Step3.測試能否順利同步資料

執行格式大致如下(或man rsync)以下將執行分為三段來講解,可
執行如下行指令來測試能否順利同步

Usage: rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST

#/usr/local/bin/rsync -avzP --delete --password-file=/usr/
home/weithenn/rsyncd.secrets //接下一行(同一行)/usr/local/
www/ weithenn@192.168.88.1::web

項目(參數) 說明rsync [OPTION]-a, --archive archive mode, e
quivalent to -rlptgoD 檔案模式-v, --verbose increase verbosi
ty 觀看過程-z, --compress compress file data 壓縮資料-P equi
valent to --partial --progress 顯示程序進度%--delete delete
files that don't exist on the sending side 當source端刪除A文
件則destination端也把A文件刪除保持二台機器資料的一致性--pass
word-file=FILE get password from FILE 指定本機rsyncd.secrets
的位置SRC [SRC]/usr/local/www/ 將本機目錄/usr/local/www備份
到rsync server的備份目錄/home/backup/web/www[USER@]HOST:DESTw
eithenn@192.168.88.1::web 以weithenn身份登入到rsync server(1
92.168.88.1)上"web" module

Step4.加入排程

製作rsync.sh以利排程內容如下

#vi rsync.sh #!/bin/sh/usr/local/bin/rsync -avzP --dele
te --password-file=/usr/home/weithenn/rsyncd.secrets //接
下一行(同一行)/usr/local/www/ weithenn@192.168.88.1::web

編輯排程(每天晚上12點執行rsync.sh)

#crontab -e 0 0 * * * /usr/home/weithenn/rsync.sh

Rsync 補充-異地備份

上述例子用在內部區域互相備份不錯,若是要使用異地備份呢?因
為直接傳資料便容易遭到有心人士的截取,因此我們使用SSH傳輸來
達成異地備份且傳輸加密;但使用SSH登入到遠端主機時會需要輸入
密碼,會使自動化備份流程受到干擾,因此我們使用一個 SSH v2 DSA
公(私)密鑰來達成SSH登入遠端主機而不用輸入密碼,以便自動化備
份流程順利執行,可使用 ssh-keygen -d 命令(或ssh-keygen -t d
sa )來建立SSH v2 DSA 公(私)密鑰。公(私)密鑰皆放在 ~/.ssh/內
,而DSA 公共密鑰放在所要連線遠端機器的~/.ssh/authorized_keys2
中。下例遠端機器ip(61.60.59.58)

Step1.產生SSH v2 DSA 公(私)密鑰

產生key對話內容如下

# ssh-keygen -d Generating public/private dsa k
ey pair.Enter file in which to save the key (/home/weithenn/
.ssh/id_dsa):預設產生key的路徑Enter passphrase (empty for no
passphrase):保護key的密碼Enter same passphrase again:保護ke
y的密碼Your identification has been saved in /home/weithenn/
.ssh/id_dsa.Your public key has been saved in /home/weithenn
/.ssh/id_dsa.pub.The key fingerprint is:2a:98:c5:27:2b:f9:91
:ee:84:bb:27:d2:2f:f0:b7:83 weithenn@bsd.test

Step2.將SSH v2 DSA 公鑰複製至遠端主機

將公鑰(id_dsa.pub)複製到遠端主機.ssh目錄下

# scp id_dsa.pub 61.60.59.58:/home/weithenn/.ssh/authorize
d_keys2 Password:因為還沒ok!!所以還要輸入密碼id_dsa.pub
100% |**********************************************| 617 00
:00 //複製公鑰成功至遠端主機

Step3.測試能否順利登入遠端主機

# ssh 61.60.59.58 //ssh登入遠端主機Password:
//沒產生SSH v2 DSA 公(私)密鑰前,用SSH登入遠端主機需要輸入p
wd才能進入遠端主機# ssh 61.60.59.58 //ssh登入遠端主機,成
功便能不用輸入密碼並順利登入遠端主機

Step4.加入排程

製作rsync.sh以利排程內容如下,備份本機目錄(usr/home/weithe
nn)到遠端主機(61.60.59.58)的目錄(/home/backup/jeoutai)下

#vi rsync.sh #!/bin/sh rsync -avzP --delete -e ss
h /usr/home/weithenn 61.60.59.58:/home/backup/jeoutai

編輯排程(每天晚上12點執行rsync.sh進行異地同步備份)

#crontab -e 0 0 * * * /home/weithenn/rsync.sh

【參考】

[網路管理技術文件]

[rsync官網]

[自由軟體應用諮詢中心]

[FreeBSD 使用手冊-Chapter 10.10 Openssh]

【Log】

初稿-2004/04/16

補文-異地備份-2004/04/19


« [遊記] 台北燈會 | Main | [freebsd] 更新ports »

迴響


發表迴響






Powered by LifeType