我们在网维工作中,常常要备份一些资料,虽然事情不复杂,但是很费时间的,我在这里分享一个 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 |