天天看點

Rsync + SSH + Expect 實作安全的集中的自動的備份

                        <b>Rsync + SSH + Expect </b><b>實作安全的集中的自動的備份</b>

請在下圖上點選一下,就可以看到清晰的圖檔了,筆者不大會弄圖檔,請見諒。

因第一種方法(普通的備份方法)使用得比較多,是以就不在舉例了。下面說說第二種方法(改進後的備份方法)的具體配置。

1、在備份中心上執行下列操作:

第一步:寫一個BASH腳本,作具體的拷貝檔案的工作,例如:

 -bash-3.00# cat 181.sh

rsync -avz --rsh="ssh -l xx-rsync-user" \

      --exclude-from=/opt/script/data/181/exclude_dirs \

xxx.xx.xxx.181:/usr/my_applications  /opt/backup/xxx.xxx.xxx.181/

注:xx-rsync-user 是伺服器xxx.xx.xxx.181上的一個普通權限使用者,該使用者隻有對目錄/usr/my_applications的讀權限。

第二步:寫一個Expect腳本,調用第一步的BASH腳本,目的是給BASH腳本輸入密碼,例如:

-bash-3.00# cat 181.exp

#!/usr/bin/expect -f

#

spawn date "+%Y-%m-%d %H:%M"

expect "#"

spawn /opt/script/prod/181.sh

expect "password:" { send "&lt;使用者xx-rsync-user的密碼&gt;\n" }

expect ".*\@.*#"

第三步:建立一個crontab,調用第二步的Expect腳本,以定時自動備份,例如:

10 * * * * /opt/script/prod/181.exp &gt;&gt; /opt/script/data/181/181.log

2. 在需要備份資料的伺服器上執行下列操作:

第一步:登入到伺服器xxx.xx.xxx.181上去,建立使用者xx-rsync-user,并授予其對/user/my_applications目錄的隻讀權限;

如果有其它的伺服器需要備份,那麼重複上述步驟就OK了。

本文轉自zkjian517 51CTO部落格,原文連結:http://blog.51cto.com/zoukejian/56678