我们在网维工作中,常常要备份一些资料,虽然事情不复杂,但是很费时间的,我在这里分享一个 Linux 备份脚本,轻松自如的实现自动备份,并且可以保留N天备份的档案,这个脚本分为两个文件,一个是执行文件backup.sh,另一个是备份项目文件project.lst。
#backup.sh
-- 重要变量名 作用
LogFile 日志文件
SourceDir 需要备份的目录
BakDir 备份至此目录
RetainDay 备份档案文件保留天数
ProjectLst 备份项目文件配置文件
代码如下:
- #!/bin/bash#author:InBi#date:2011-07-28#role:backupfilesperiodically.#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"backupstartat$(date+"%Y-%m-%d%H:%M:%S")">$LogFileecho"--------------------------------------------------">>$LogFilecd$BakDirPROJECTLIST=`cat$ProjectLst`forProjectin$PROJECTLISTdoProjectData=$SourceDir/$ProjectDestDir=$BakDir/$ProjectPackFile=$DATE.$Project.tgzif[-f$BakDir/$PackFile]thenecho"backupfilehaveexist!">>$LogFileelsecp-RHpf$ProjectData$DestDir>/dev/nulltar-zcvf$PackFile$Project>/dev/nullecho"backup$Projectdoneinto$PackFile">>$LogFilerm-rf$ProjectfiOldFile="$BakDir/"$(date--date="$RetainDaydaysago"+"%Y-%m-%d").$Project.tgzif[-f$OldFile]thenrm-f$OldFile>/dev/nullecho"[$OldFile],DeleteOldFileSuccess!">>$LogFilefiecho"">>$LogFiledoneecho"--------------------------------------------------">>$LogFileecho"backupendat$(date+"%Y-%m-%d%H:%M:%S")">>$LogFileecho"">>$LogFileexit0
# project.lst:这个文件比较好理解,就是一个text文件,它的每一行表示一个项目,也就是你需要备份的目录下面的文件或目录。
onu_armonu_voiponu_wifi5xxx7xxx8xxxnms