Linux 定期自動備份文件夾腳本
根據網上代碼改編而成,這個腳本分為兩個文件,一個是執行文件backup.sh,另一個是備份項目文件backup.txt。backup.txt這個文件比較好理解,就是一個text文件,它的每一行表示一個項目,也就是你需要備份的目錄下面的文件或目錄。
代碼如下:
#!/bin/bash
#author: Rekfan
#date: 2013-01-11
#作用: 定期備份文件
#website: http://blog.rekfan.com
##################################################
# 重要變量名 作用
# SourceDir 需要備份的目錄
# LogFile 日誌文件
# BakDir1 備份上層目錄
# BakDir2 備份目錄
# RetainDay 備份檔案文件保留天數
# ProjectTxt 備份項目文件配置文件
##############★ 以下信息需要配置
DATE=`date +"%Y-%m-%d"`
SourceDir=/var/web
BakDir1=/web_bak
BakDir2=/web_bak/`date +"%Y-%m-%d"`
LogFile=/web_bak/log_`date +"%Y-%m-%d"`.log
RetainDay=20
ProjectTxt=/web_bak/backup.txt
##############★ 創建備份目錄 ★##################
mkdir -p $BakDir2/
echo "backup start at $(date +"%Y-%m-%d %H:%M:%S")" > $LogFile
echo "--------------------------------------------------" >> $LogFile
echo " " >> $LogFile
echo "創建備份目錄【$BakDir2】成功" >> $LogFile
cd $BakDir2
##############★ 備份核心代碼 ★##################
ProjectList=`cat $ProjectTxt`
for Project in $ProjectList
do
ProjectData=$SourceDir/$Project
DestDir=$BakDir2/$Project
PackFile=$Project-$DATE.tar.gz
if [ -f $BakDir2/$PackFile ]
then
echo "backup file have exist !" >>$LogFile
else
cd $SourceDir
tar -zcvf $BakDir2/$PackFile $Project > /dev/null
echo "目錄或文件 $SourceDir/$Project已經備份到 $BakDir2/$PackFile ">>$LogFile
fi
##############★ 刪除$RetainDay天前的備份 ★##############
OldFile="$BakDir1/"$(date --date="$RetainDay days ago" +"%Y-%m-%d")
if [ -f $OldFile ]
then
rm -rf $OldFile > /dev/null
echo "[$OldFile],Delete Old File Success!" >> $LogFile
fi
echo " " >> $LogFile
done
echo "--------------------------------------------------" >> $LogFile
echo "backup end at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFile
echo " ----------BY:Rekfan " >> $LogFile
echo " " >> $LogFile
exit 0
Linux 定期自動備份文件夾腳本