[freebsd] 異地備援好東西 rsync
以下引用別人的資料 ^^;;
> 用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 »