dump ssh 異地備份


dump 和 restore 其實有相對應的 rdump 和 rrestore 可進行遠端的備份及還原,不過 r 系統的指令的安全性較需考量,我們可以利用 ssh 來進行較安全的連線。

假設現在想把名為 mail 上掛在 /home 的這個 partition 異地備份至名為 bkserver 主機上的 /backup 目錄 ,我們可以進行以下程序來備份。

準備工作
在 bkserver 上準備一個備份登入用的專用帳號,假設就叫 bk 好了!!
檢查 bkserver 備份專用的目錄 /backup 是否可被備份專用帳號 ( bk ) 寫入。
在 mail 上因為要執行 dump 必須是 root ,所以屆時必須由 root 執行 ssh 遠端登入 bkserver,所以要為 mail 上 root 以 ssh-keygen 準備登入用的 “公開金鑰” 。
root@mail 的公開金鑰置入 bkserver 上帳號 (bk) HOME 的 .ssh/authorized_keys 中。
進行備份
準備工作中比較麻煩的部份應該遠端登入用的金鑰,製作流程如下:

2-5-1 連線測試
我們先在 mail 上以 root 的身份登入 mail,然後遠端登入 bkserver (假設在 bkserver 上已經建好 bk 這個帳號)

# ssh bk@bkserver

如果是第一次連線,應該會出現下面的問題詢問是否儲存遠端主機的識別資料,類似下面:

The authenticity of host ‘bkserver.test.edu.tw (192.168.1.5)’ can’t be established.
DSA key fingerprint is 2b:cc:89:80:bc:77:45:83:47:ae:b6:29:51:f5:15:33.
Are you sure you want to continue connecting (yes/no)?

輸入 yes 即可,ssh 會將資料存入 ~/.ssh/know_hosts ,下次就不會有同樣的問題。

接著輸入 bk 的登入密碼,如果成功登入就完成連線測試,輸入 exit 登出,準備進行登入用金鑰的製作。

2-5-2 製作金鑰
我們希望在進行遠端備份能夠不用輸入密碼自動登入遠端主機執行備份儲存的工作,所以要先在 mail 上用 ssh-keygen 來產生 ssh 登入用的金鑰對。

先確認已經在本機 ( mail ) 上用執行 dump 指令的 root 帳號登入哦!然後由 root 執行:

ssh-keygen -d

接著應該會出現以下的對話:

Generating public/private dsa key pair.
Enter file in which to save the key (/root/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_dsa.
Your public key has been saved in /root/.ssh/id_dsa.pub.
The key fingerprint is:
a6:62:05:95:92:79:2a:71:2d:73:3b:7d:0e:e7:39:26 [email protected]

如果希望登入時不用輸入密碼直接登入,只要通通按 Enter 回所有問題即可。

執行完會在 /root/.ssh 中產生 id_dsa 和 id_dsa.pub ,後面那個就是我們要放在 bkserver 裡 bk 帳號下的金鑰。

接著我們要把 /root/.ssh/id_dsa.pub 複製到遠端主機 (bkserver) 裡備份專用帳號 (bk) 個人目錄的.ssh/authorized_keys 中。

如果 bkserver 的 ~bk/.ssh/authorized_keys 不存在,我們直接把前面在 mail 上 root 帳號產生的 id_dsa.pub 上傳過去即可,在 mail 上以 root 執行:

scp ~/.ssh/id_dsa.pub bk@bkserver:.ssh/authorized_keys

不過要記得先幫 bk 建好 .ssh 的目錄哦!不然會發生錯誤。

如果 authorized_keys 早已存在,我們可以先將 id_dsa.pub 傳到 bkserver 上,然後再將 id_dsa.pub 中的內容貼到 ~bk/.ssh/authorized_keys 新的一行。

如果前面的步驟完成了,我們在 mail 以 root 執行 ssh bk@bkserver 應該就可以不用輸入密碼遠端登入囉!

2-5-3 遠端備份
做好前面的準備工作後,我們就可以在 mail 上將某個 partition 備份到位於遠端的 bkserver 上了。

例如:

# dump -0uaf – /home | ssh -c blowfish bk@bkserver dd of=/backup/mail.home.dump

上面的例子在 mail 上執行,將掛在 mail /home 的 partition 備份起來,並以 bk 帳號遠端登入 bkserver 儲存在 bkserver 的 /backup/mail.home.dump 裡。

如果想省一些空間則可以順便用 gzip 壓縮後再傳給 bkserver,指令改為:

# dump -0uaf – /home | gzip -2 | ssh -c blowfish bk@bkserver \
dd of=/backup/mail.home.dump