#!/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,比例不是很高,若是 压缩磁盘会多几步工做量,看下过程先备份数据,再各个项目压缩,删除备份项目,多了压缩和删除,压缩过程挺漫长,不介意使用,我 是天天全备,出现故障好恢复