公司的某台linux服務器實在是讓人不放心,就害怕在哪個雷雨交加的晚上,脆弱的它宕機了…沒辦法,資源有限,只好把自己平時辦公的電腦貢獻出來,作為鏡像備份服務使用。辦公電腦裝的是window XP和centos5 雙系統,1TB硬盤。在linux下分了400GB硬盤空間作為備份用。(唉,真苦啊,申請新電腦的消息也石沉大海。)
言歸正傳。
實際環境:兩台centos5服務器進行數據同步備份。
備份方式采用:rsync+ssh (因為這是最簡單的一種備份方式了,而且rsync備份的速度非常塊,不但可以備份文件,連同文件的屬性,所有者,所屬組織等信息都能詳細備份,而且每次備份只檢測更新部分。所以,rsync對我來說是最理想的備份方式。)
軟件安裝:rsync ,ssh 關於ssh,一般默認都是安裝好的,可以直接用了。至於rsync都是自己現裝的。linux的依賴關系實在煩人,所以決定采用源碼包編譯安裝,下載地址:http://www.rsync.samba.org
下載解壓完成後,進入解壓完後的目錄,直接按照configure,make,make install三部曲來就ok了。(別忘裝GCC)。
下面就是實踐過程:
假設:主服務器IP地址是:192.169.10.100
備份服務器IP地址是:192.168.10.110
現在主服務器、備份服務器上安裝rsync軟件 。
安裝完後:
一:備份服務器上穿件ssh密鑰(用來免密碼登錄目標服務器),這裡我用slave這個帳號來進行鏡像同步(用哪個帳號來同步數據,就用哪個帳號來制作密鑰)。
#ssh-keygen -t rsa<==這個步驟在產生 Key pair
Generating public/private rsa key pair.
Enter file in which to save the key (/home/test2/.ssh/id_rsa): <==這裡按下Enter
Enter passphrase (empty for no passphrase): <==這裡按 Enter
Enter same passphrase again: <==再按一次 Enter
Your identification has been saved in /home/test2/.ssh/id_rsa. <==這是私鑰
Your public key has been saved in /home/test2/.ssh/id_rsa.pub. <==這是公鑰
The key fingerprint is: *********************
# 注意∶ -t 指的是『使用何種密碼演算方式?』由於我們使用 RSA ,
# 所以直接輸入 -t rsa 即可建立兩支 Keys !
# 此外,建立的兩把 Keys 都放置在家目錄下的 .ssh 這個目錄中!
# 察看一下這兩把 Keys 吧
$ ll ~/.ssh
-rw------- 1 test2 test2 887 Nov 12 22:36 id_rsa
-rw-r--r-- 1 test2 test2 233 Nov 12 22:36 id_rsa.pub
-rw-r--r-- 1 test2 test2 222 Oct 31 11:20 known_hosts
上面出現的know_hosts,就是用ssh第一次登錄目標服務器時候,是需要你輸入yes的,輸入完之後就有了這個東東了。第二次就不需要輸入yes了,直接輸入密碼就可以了。key制作好了,密碼也不輸入了,就直接登錄遠程服務器了。
上面的**************.pub就是公鑰。把這個文件的復制到主服務器的master用戶的家目錄下.ssh文件夾內。重命名為authorized_keys 如果有多個客戶端要連進來,那就用cat id_rsa.pub >> authorized_keys 把公鑰的信息追加到authorized_keys文件就可以了。
接下來就可以嘗試一下免密碼登錄了。
$ssh
[email protected] 回車 是不是直接進去了呢? —>(我在這裡郁悶了一個晚上,當時家裡沒有網線,看了些參考資料始終沒有搞定,原因在於我用CRT軟件連的虛擬機做實驗,這裡要在真是的shell環境先方可以,不然,死活要你輸入密碼,你得把密鑰導入到CRT當中才可以的。估計putty也是這樣。)
上訴都成功後,就可以用slave賬戶同步master賬戶的資料了(只要master有權限的都可以同步)。
輸入命令:
rsync -av -e ssh
[email protected]:/home /home
將主服務器/home 下的內容同步到 本機的/home目錄下面。
這個地方大家可以做個實驗,就是關於路徑後面的/問題,比如:/home/ /home/ 這樣跟上面的效果不同。
rsync 語法;
[root@linux ~]# rsync [-avrlptgoD] [-e ssh] [user@host:/dir] [/local/path]
參數∶
-v ∶觀察模式,可以列出更多的資訊;
-q ∶與 -v 相反,安靜模式,輸出的資訊比較少;
-r ∶遞回復制!可以針對『目錄』來處理!很重要!
-u ∶僅更新 (update),不會覆蓋目標的新檔案;
-l ∶復制連結檔的屬性,而非連結的目標原始檔案內容;
-p ∶復制時,連同屬性 (permission) 也保存不變!
-g ∶保存原始檔案的擁有群組;
-o ∶保存原始檔案的擁有人;
-D ∶保存原始檔案的裝置屬性 (device)
-t ∶保存原始檔案的時間參數;
-I ∶忽略更新時間 (mtime) 的屬性,檔案比對上會比較快速;
-z ∶加上壓縮的參數!
-e ∶使用的通道協定,例如使用 ssh 通道,則 -e ssh
-a ∶相當於 -rlptgoD ,所以這個 -a 是最常用的參數了!
更多說明請參考 man rsync 的解說!
這樣我的目的就達到了,可以同步數據了,寫個小腳本,放進crontab裡面,每天下班的時候切換到linux系統。早上來的時候看看同步成功了沒有。然後切換到window xp。就這樣吧。
本次實驗完全參考的《鳥哥的linux私房菜》
其實,這種備份不到好,尤其是在系統繁忙的時候。而且備份服務器什麼都不做,費電不說,浪費資源。主服宕機了,備份服務器無法起作用。只能起到減少損失的作用