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
tar -czvf $today.ntut_ /usr/local/www
rm -f $deldate.ntut_etc.tgz
rm -f $deldate.ntut_home.tgz
rm -f $deldate.ntut_g2data.tgz
rm -f $deldate.ntut_mysql.tgz
rm -f $deldate.ntut_
#
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
rm -f $deldate.ntut_
#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
阅读(758) | 评论(0) | 转发(0) |