Description:
狡兔有三窟,時時不忘備份 ~ 最近發現 rsync 的小問題,在資料量日漸成長狀況下,發現 rsync 好像不能備份單一檔案大於 3G 的數據,因此我改變方式備份數據方式,改采最基本的 SFTP 的服務將 BSD 1 的數據備份到 BSD 2 上的 HD 裡,並且保留 BSD2 上的備份數據 5 天,而超過 5 天之後的數據會自動刪除,備份數據的方式采用最簡易的 shell script ,寫法如下:
Environment :
BSD 1 Server IP:77.77.77.77
BSD 2 Server IP:88.88.88.88
Setp 1.
在 BSD1 上寫個自動備份的 shell script ,並且用 tar 來壓縮備份數據,備份完成數據後即刪除前一天的備份數據,接著采用 sftp 上傳到 BSD2 Server 上。
#vi /data/backup/auto-backup.sh
#!/bin/sh
#
host="88.88.88.88"
id="賬號"
pw="密碼"
basedir="/data/backup/ntut_backup"
remodir="/data/backup/ntut_backup"
filename="*.tgz"
today=`/bin/date +%Y%m%d`
deldate=`/bin/date -v -1d +%Y%m%d`
#
echo off
echo ' 本地資料備援 !!!'
cd $basedir
tar -czvf $today.ntut_etc.tgz /etc /usr/local/etc
tar -czvf $today.ntut_home.tgz /home
tar -czvf $today.ntut_g2data.tgz /data/g2data
tar -czvf $today.ntut_mysql.tgz /var/db/mysql
rm -f $deldate.ntut_etc.tgz
rm -f $deldate.ntut_home.tgz
rm -f $deldate.ntut_g2data.tgz
rm -f $deldate.ntut_mysql.tgz
#
echo off
echo ' 遠程數據備援 !!!'
cd $basedir
sftp "$host" <
user $id $pw
binary
cd $remodir
put $filename
bye
EOC
#chmod 755 /data/backup/auto-backup.sh # 將 auto-backup.sh 的權限改成可執行。
編輯 crontab #crontab -e 加入下面這行:
30 4 * * * /data/backup/auto-backup.sh # 讓 BSD1 Server 每天零晨4點30分做一次本地及遠程數據備份
Setp 2.
BSD 2 上只要有 ssh 服務就可透過 sftp 接受遠程數據,寫個 del-daily.sh 自動刪除 5 天前的備份數據。
#!/bin/sh
#
deldate=`/bin/date -v -5d +%Y%m%d`
basedir="/data/backup/ntut_backup"
#
echo off
echo '開始刪除5天前的數據 !!!!'
cd $basedir
rm -f $deldate.ntut_etc.tgz
rm -f $deldate.ntut_home.tgz
rm -f $deldate.ntut_g2data.tgz
rm -f $deldate.ntut_mysql.tgz
#chmod 755 /data/backup/del-daily.sh # 將 del-daily.sh 的權限改成可執行即可。
編輯 BSD2 的 crontab #crontab -e 加入下面這行:
30 5 * * * /data/backup/del-daily.sh # 讓 BSD2 Server 每天零晨 5 點 30 分自動執行刪除五天前的備份數據文件
To Add.
如何備份 mysql 數據庫的檔案?mysql 的數據庫檔案,是放置在 /var/db/mysql 下,因此我們需備份時,只需要備份此目錄下的數據即可。
范例如下:
#tar czvf mysql_backup.tgz /var/db/mysql