Linux本地加異地自動備份方案

創建腳本/root/script/backup.sh

# 該腳本應用於10多臺普通的Linux應用服務器,多年來從未出過差錯。
# 數據庫備份較爲特殊,這裏不包含數據庫備份。
# 因爲腳本中含有FTP密碼,所以FTP僅給予寫權限較爲安全,FTP中的老備份的定期刪除任務由FTP服務器完成。
# 備份加入到自動任務中,每週六23:00執行,並寫入日誌,如下:
# 追加下面語句到/etc/crontab中
# 0 23 * * 6 root /root/script/backup.sh >> /root/script/backup.log 2>&1
#有註釋版:
#!/bin/bash
#=====================================================
#author     zhaoyn
#date       2010/12/31
#=====================================================
#參數設定
basedir=/opt/backup               #備份存放的目錄
days=15                           #備份在本地保留天數
bakfiles="/root/script /etc"      #需要備份的目錄或文件,請不要使用快捷方式或通配符
ftpip=XXX.XXX.XXX.XXX             #異地備份的FTP地址
ftpuser='username'                #異地備份的FTP用戶名
ftppw='password'                  #異地備份的FTP密碼
echo =====================================================
date
cd $basedir
#刪除備份目錄中15天以前備份文件,不包含子目錄
find -maxdepth 1 -name "*.tgz" -mtime +"$days" -exec rm -f {} \;
for bakfile in $bakfiles
do
   file=`basename $bakfile`
   #壓縮打包需要備份的目錄,包括權限,文件命名包含當前時間
   tar -czpf "$file"_$(date +%Y%m%d-%H%M).tgz $bakfile
   #大文件打包前後,緩解磁盤壓力,降低I/O錯誤概率
   sleep 10s ;sync;sync
done
#通過FTP上傳當天備份的文件到異地
ftp -v -n -i $ftpip <<END
user $ftpuser $ftppw
bin
mput *$(date +%Y%m%d)*.tgz
bye
END

 

 


#無註釋版:

#!/bin/bash
#=====================================================
#author     zhaoyn
#date       2010/12/31
#=====================================================
basedir=/opt/backup
days=15
bakfiles="/root/script /etc"
ftpip=XXX.XXX.XXX.XXX
ftpuser='username'
ftppw='password'
echo =====================================================
date
cd $basedir
find -maxdepth 1 -name "*.tgz" -mtime +"$days" -exec rm -f {} \;
for bakfile in $bakfiles
do
   file=`basename $bakfile`
   tar -czpf "$file"_$(date +%Y%m%d-%H%M).tgz $bakfile
   sleep 10s ;sync;sync
done
ftp -v -n -i $ftpip <<END
user $ftpuser $ftppw
bin
mput *$(date +%Y%m%d)*.tgz
bye
END



原文:http://www.zhaoyanan.cn/linux-local-and-remote-automatic-backup-solutions.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章