svn备份脚本

#!/bin/bash
#svn complete bakup sprit
Logfile=/svndata/svnfullbak/svnbak.log  #定义备份脚本日志文件变量
DATE=`date +%Y%m%d`
#The dir of backup date
Bakdir=/svndata/svnfullbak              #定义备份数据存放路径
Projectlist=/svndata/project.lst        #定义项目名列表变量(project.lst 是自己建立的文件,里面存放项目名,注意各项目名之间有空格隔开)
Svndir=/svndata/svn                     #定义要备份数据所在位置变量
SVNADMIN=/usr/local/svn/bin/svnadmin    #定义拷贝文件所用命令
  echo "" >>$Logfile
  echo "" >>$Logfile
  echo "-----------------------------------------------------------------------">>$Logfile
  echo $(date +"%Y-%m-%d:%H:%M:%S")>>$Logfile
  echo "-----------------------------------------------------------------------">> $Logfile
cd $Backdir
#Read the project's list
PROJECTLIST=`cat $Projectlist`          #读取项目名列表
for project in $PROJECTLIST             #逐个检查在project.lst中的项目
do
  projectdata=$Svndir/$project          #为各个项目建立变量
  destdir=$Bakdir/$project              #备份数据存放的路径及名称
  $SVNADMIN hotcopy $projectdata $destdir.$DATE    #拷贝数据
if [ $? -eq 0 ]
then
  echo "[ $project.$DATE ]Hotcopy back success" >>$Logfile #[ $project.$DATE ]此为执行变量之意
  else
  echo "[$project.$DATE]Hotcopy back fail"
fi
Oldtime=`date +%Y%m%d --date="10 days ago"` #这个变量定义了10天前备份的数据,用于设定保留距现在多少天的数据
Oldfile=$destdir.$Oldtime
if [ -d $Oldfile ]
then
  rm -rf $Oldfile>>$Logfile
  echo "[$Oldfile] Delete old file success!">>$Logfile
else
  echo "[$Oldfile] No old Backup file!">>$Logfile
fi
done
#这是个全备脚本,没有也没有压缩,对于我们公司的数据我做过一个对比,公司有80个项目,23个G压缩后21个G,比例不是很高,如果
压缩磁盘会多几步工作量,看下过程先备份数据,再各个项目压缩,删除备份项目,多了压缩和删除,压缩过程挺漫长,不介意使用,我
是每天全备,出现故障好恢复

你可能感兴趣的:(shell,SVN)