本篇出自ServerDIY
最近要規劃公司主機房內的電腦備份問題,之前的備份工具是在M$底下寫的,
只要備份主機一多,就會有問題發生。
目前有9台Linux主機(Fedora 2 4與Centos5)需要做備份,
Linux底下就有一個非常好用的備份工具可以取代我目前的備份程式。
轉貼內容:
rsync 這個功能,可以自動比對來源端和目的端的資料,有異動的部份才會備份,所以非常的快速,走 873 port ,也能用在遠端異地備份,如果搭配 windows 的支援 rsync 軟體,也能由 windows 備份資料到 linux,或相反由 linux 備份到 windows 都行。
分為 rsync server 端和 rsync client 端
server 端負責存放資料,client 端負責吐資料,同一台主機可以同時存在兩個身份,那就可以自己吐資料給自己,例如第一個 hd 的資料吐給第二個 hd,這樣每天用 crontab 做一次,就可以安心了。
server 端的設定很簡單,只有兩個檔要寫入
1. /etc/rsyncd.conf
root@b2d:~# cat /etc/rsyncd.conf
log file = /var/log/rsyncd.log #放log 的地方
[mybk] #讓client端識別的名字
path = /mybk #自己規畫釀 client 放置資料的路徑
auth users = my_backup #要來放資料,要有一個帳號,自訂一個 my_backup 為帳號
uid = root #以root的身份來執行rsync
gid = root
secrets file = /etc/rsyncd.secrets #存放密碼的檔名。所以 client 也會有一個檔案存放密碼
read only = no #可寫入
2. /etc/rsyncd.secrets
root@b2d:~# cat /etc/rsyncd.secrets
my_backup:123456 #密碼檔的內容,"帳號:密碼" 就那麼簡單,帳號就是上面那個設定檔的auth users
client 檔的設定更簡單
1. /root/rsyncd.secrets
root@b2d:~# cat /root/rsyncd.secrets
123456 #就只要存在密碼即可
然後下一個指令,讓 client 吐資料給 server 就行了,B2D 已經把指令寫成一個 shell,定排程去執行,如下
root@b2d:~# cat /root/bk-b2d.sh
#! /bin/sh
# IP 為遠端備份主機的 IP
# 格式:
# rsync 選項 密碼檔 欲備份的檔案目錄之絕對路徑 帳號@主機IP::備份區段
# 用例:
# /usr/bin/rsync -avHS --numeric-ids --password-file=/root/rsyncd.secrets /var/www my_backup@192.168.1.186::mybk
# 若要增加備份目錄, 請自行複製新增一列來修改要備份的檔案目錄即可
#------------------------------------------------------------
/usr/bin/rsync -avHS --numeric-ids --password-file=/root/rsyncd.secrets /etc my_backup@127.0.0.1::mybk
/usr/bin/rsync -avHS --numeric-ids --password-file=/root/rsyncd.secrets /home my_backup@127.0.0.1::mybk
/usr/bin/rsync -avHS --numeric-ids --password-file=/root/rsyncd.secrets /var my_backup@127.0.0.1::mybk
因為我設了自己備份給自己,所以裡面的 127.0.0.1 是本機的意思,若是要備份異地的主機,就填異地的主機 ip,且異地的主機要有 rsync server 的設定檔存在,並啟用 rsync 服務。
上面三行,表示我備份了三個資料夾,/etc /home /var ,那個 my_backup@127.0.0.1::mybk 的 my_backup 就是 server 端的帳號,
最後那 ::mybk ,就是 server 端設定的名字,如下server 端的 /etc/rsyncd.conf 設定檔中紅色的字就是
log file = /var/log/rsyncd.log #放log 的地方
[mybk] #讓client端識別的名字
path = /mybk #自己規畫釀 client 放置資料的路徑
auth users = my_backup #要來放資料,要有一個帳號,自訂一個 my_backup 為帳號
uid = root #以root的身份來執行rsync
gid = root
secrets file = /etc/rsyncd.secrets #存放密碼的檔名。所以 client 也會有一個檔案存放密碼
read only = no #可寫入
備註:可能會遇到的疑難問題:
1. Q: 出現以下這個訊息, 是怎麼一回事?
@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: 這是因為密碼設錯了, 無法登入成功, 請再檢查一下 rsyncd.secrets 中的密碼設定, 二端是否一致?
2. Q: 出現以下這個訊息, 是怎麼一回事?
password file must not be other-accessible
continuing without password file
Password:
A: 這表示 rsyncd.secrets 的檔案權限屬性不對, 應設為 600
請下 chmod 600 rsyncd.secrets
3. Q: 出現以下這個訊息, 是怎麼一回事?
@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 路徑所設的那個目錄並不存在所致.
請先用 mkdir 開設好備份目錄.
留言列表