我們在網維工作中,常常要備份一些資料,雖然事情不復雜,但是很費時間的,我在這里分享一個 Linux 備份腳本,輕松自如的實現自動備份,并且可以保留N天備份的檔案,這個腳本分為兩個文件,一個是執行文件backup.sh,另一個是備份項目文件project.lst。
#backup.sh
-- 重要變量名 作用
LogFile 日志文件
SourceDir 需要備份的目錄
BakDir 備份至此目錄
RetainDay 備份檔案文件保留天數
ProjectLst 備份項目文件配置文件
代碼如下:
- #!/bin/bash#author: InBi#date: 2011-07-28#role: backup files periodically.#website: http://www.itwhy.org/2011/07-28/707.html##################################################LogFile=/backup/log/`date +"%Y-%m"`.logDATE=`date +"%Y-%m-%d"`SourceDir=/var/RDfileBakDir=/backupRetainDay=20ProjectLst=/backup/project.lst##################################################echo "backup start at $(date +"%Y-%m-%d %H:%M:%S")" > $LogFileecho "--------------------------------------------------" >> $LogFilecd $BakDirPROJECTLIST=`cat $ProjectLst`for Project in $PROJECTLISTdoProjectData=$SourceDir/$ProjectDestDir=$BakDir/$ProjectPackFile=$DATE.$Project.tgzif [ -f $BakDir/$PackFile ]thenecho "backup file have exist !" >>$LogFileelsecp -RHpf $ProjectData $DestDir > /dev/nulltar -zcvf $PackFile $Project > /dev/nullecho "backup $Project done into $PackFile ">>$LogFilerm -rf $ProjectfiOldFile="$BakDir/"$(date --date="$RetainDay days ago" +"%Y-%m-%d").$Project.tgzif [ -f $OldFile ]thenrm -f $OldFile > /dev/nullecho "[$OldFile],Delete Old File Success!" >> $LogFilefiecho " " >> $LogFiledoneecho "--------------------------------------------------" >> $LogFileecho "backup end at $(date +"%Y-%m-%d %H:%M:%S")" >> $LogFileecho " " >> $LogFileexit 0
# project.lst:這個文件比較好理解,就是一個text文件,它的每一行表示一個項目,也就是你需要備份的目錄下面的文件或目錄。
onu_armonu_voiponu_wifi5xxx7xxx8xxxnms
新聞熱點
疑難解答