Linux系统SubVersion定期备份完整脚本
文章作者 100test 发表时间 2008:02:01 15:26:44
来源 100Test.Com百考试题网
具体配置请根据自己需要调整。
环境:Centos5
svn 目录是在/svn上。
另外,记的在你的/ 下面建如下的目录
# mkdir -p /backup/svn/data/
# mkdir -p /backup/svn/daily/
脚本功能:定期对一些项目进行完整备份。
project.lst 文件格式如下:
project1
project2
备份脚本如下:
# !/bin/sh
#
#
# subversion完整备份的脚本,调整好后使用crontab -e放到自动执行里面即可。
#
# 备份日志文件
LogFile=/backup/svn/svnbak.log
DATE=`date %Y%m%d`
# 备份目录
BakDir=/backup/svn/data
# 日常备份目录,如果有
DailyDir=/backup/svn/daily
# 要备份的项目列表文件,只有项目名
ProjectLst=/backup/svn/project.lst
# 所有项目都保存在这个目录下
SvnDir=/svn
#svnadmin 程序的路径
SVNADMIN=/usr/bin/svnadmin
echo " " >> $LogFile
echo " " >> $LogFile
echo "——" >> $LogFile
echo $(date "%y-%m-%d %H:%M:%S" ) >> $LogFile
echo "——" >> $LogFile
cd $BakDir
# 读取项目列表
PROJECTLIST=`cat $ProjectLst`
for project in $PROJECTLIST
do
projectdata=$SvnDir/$project
destdir=$BakDir/$project
dumpfile=$DATE.$project.tgz
if [ -f $BakDir/$dumpfile ]
then
echo "backup file have exist!" >>$LogFile
else
$SVNADMIN hotcopy $projectdata $destdir ——clean-logs
tar czvf $dumpfile $destdir >/dev/null
rm -fr $project
echo "backup $project done into $dumpfile ">>$LogFile
fi
## 0delete old tgz 此处根据crontab 的时间调整,例如一周一次备份,此处保留了5 份备份,以前的删除
oldfile="$BakDir/"$ (date %y%m%d——date= 28 days ago )。$project.tgz
if [ -f $oldfile ]
then
rm -f $oldfile >> $LogFile 2>&.1
echo "[$oldfile]Delete Old File Success !" >> $LogFile
else
echo "[$oldfile]No Old Backup File!" >> $LogFile
fi
done
#0delete previous daily backup files
cd $DailyDir
rm -f *