星期三, 3月 21, 2007

[linux]rsync

公司需要用到rsync備份機制

找到文章

http://linux.tnc.edu.tw/techdoc/rsync.htm

http://ohaha.ks.edu.tw/rsyncd.htm



快速無斷::



三. 設定 rsync server: (假設這台主機名稱為 bk.xxx.edu.tw)



rsync server 端要設定以下四項:



規劃建立備份目錄區

設定: /etc/xinetd.d/rsync

設定: /etc/rsyncd.conf

設定: 密碼檔

依次說明如下:



1. 規劃建立備份目錄區:



建議您準備一個容量較大且獨立的分割區, 並在其中開好備份目錄, 如此 /bk/server



2. 設定 /etc/xinetd.d/rsync, 簡單範本如下:



# 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, 使上述設定生效.



上述, 主要是要打開 rsync 這個 daemon, 一旦有 rsync client 要連接時, xinetd 會把它轉介給 rsyncd (跑 port 873).







3. 設定 /etc/rsyncd.conf :



以下區塊, 代表開放給某一台 rsync client 主機的設定, 簡單範本如下:









[mch1]

path = /bk/server/mch1_backup

auth users = mch1_backup

uid = root

gid = root

secrets file = /etc/rsyncd.secrets

read only = no





比較重要的解釋:



[mch1] 代表欲備份的主機代號, 名稱可自訂.



path 用來設定備份檔案要存放在那一個目錄? 請先用 mkdir 開設好, 名稱可自訂.



auth users 代表授權的帳號, 名稱可自訂.



secrets file 代表儲存帳號密碼的密碼檔, 其放置的路徑檔名.



當然, 這台備份主機, 可以容納許多 rsync client 連接, 只要在 rsyncd.conf 中設妥對應的區塊即可.



換言之, 以下範本, 代表二個主機 mch1 及 mch2 欲備份進來:





[mch1]

path = /bk/server/mch1_backup

auth users = mch1_backup

uid = root

gid = root

secrets file = /etc/rsyncd.secrets

read only = no



[mch2]

path = /bk/server/mch2_backup

auth users = mch2_backup

uid = root

gid = root

secrets file = /etc/rsyncd.secrets

read only = no





4. 設定密碼檔:



rsyncd.secrets 的內容很簡單, 格式為 帳號:密碼



如以下例子:



mch1_backup:ILoveOLS3



注意! 上述設定只是一個範例, 請務必自訂一組, 千萬不要直接套用.



接下來, 要將 rsyncd.secrets 這個密碼檔的檔案屬性設為 root 擁有, 且權限要設為 600, 否則無法備份成功!



因此, 請下:



chown root.root rsyncd.secrets

chmod 600 rsyncd.secrets

至此, rsync server 這端已設定完成, 若欲查看備份記錄, 可參考 /var/log/rsyncd.log 這個檔案.



接下來是 client 端(即欲備份的網路主機) 的設定.







四. 設定 rsync client (假設這台主機 IP 為 : 11.22.33.44)



步驟:



設定密碼檔

測試 rsync 執行指令

將 rsync 指令放入工作排程 (crontab)

另外, 假設 mch1 這台主機是網路主機, 今打算把 /usr/local/apache 這個目錄加以備份至 backup server (bk.xxx.edu.tw),



但不想備份記錄檔(也就是說要把 logs 目錄排除), 整個操作方式如下:



1. 假設把密碼檔放在 /root/rsyncd.secrets, 內容只要含有密碼一行即可:



ILoveOLS3



注意: rsyncd.secrets 的權限屬性必須設為 600



2. 測試指令是否可以成功?



/usr/bin/rsync -rvlHpogDtS --password-file=/root/rsyncd.secrets /usr/local/apache --exclude apache /logs mch1_backup@bk.xxx.edu.tw::mch1



若出現傳輸目錄檔案的畫面, 即表示測試成功.



3. 置入工作排程, 假設每天凌晨 5 點開始備份:



crontab -u root -e



0 5 * * * /usr/bin/rsync -rvlHpogDtS --password-file=/root/rsyncd.secrets /usr/local/apache --exclude apache /logs mch1_bakup@bk.xxx.edu.tw::mch1



若您有其它目錄(如 /home)要備份, 則如法泡製:



20 5 * * * /usr/bin/rsync -rvlHpogDtS --password-file=/root/rsyncd.secrets /home mch1_bakup@bk.xxx.edu.tw::mch1



若您覺得備份一台 Backup Server 不夠, 可再按上述方法, 自行增加任意多台 Backup Server, 以分散風險!

沒有留言: