全量备份
#!/bin/bash
#svn 全量备份脚本
repos_path="/var/www/svn"
back_path="/var/www/svn_backups/full_back"
repos=`ls /var/www/svn`
Date=`date +%Y%m%d`
cd $back_path
#进入目录,使总备份文件存放在该目录
echo `date` >> $back_path/svn_backup.log
for i in $repos
do
youngest=`svnlook youngest $repos_path/$i`
if [ ! -d "$i" ];then
mkdir $i
fi
#获取最后提交的版本号
svnadmin dump $repos_path/$i > $back_path/$i/$i-full.$Date
#备份
if [ $? -eq 0 ];
then
echo "$i Full amount of backup success" >> $back_path/svn_backup.log
else
echo "$i Full amount of backup failed" >> $back_path/svn_backup.log
fi
echo $youngest > $back_path/$i/youngest_revision
find $back_path/$i -mtime +20 -type f -name "$i.*" |xargs rm -f
#删除二十天以上的备份文件
done
全量恢复
#!/bin/bash
#create by wzstart@126.com
#svn 全量恢复脚本
repos_path="/var/www/svn"
Date=`date +%Y%m%d`
backup_path="/var/www/svn_backups/full_back"
#备份文件
repos=`ls $backup_path`
echo `date` >> $backup_path/svn_load.log
for i in $repos
do
cd $backup_path
if [ -d "$i" ]
then
cd $repos_path
#判断svn对应仓库是否已经创建
if [ ! -d $i ]
echo "cruent! dir item $i " >> $backup_path/svn_load.log
then
svnadmin create $i
fi
cd $backup_path/$i
svnadmin load $repos_path/$i < $i-full.$Date
echo "$Date `date` : $i load .... to backup." >> $backup_path/svn_load.log
fi
done
增量备份
#!/bin/bash
#svn 增量备份脚本
repos_path="/var/www/svn"
repos=`ls $repos_path`
Date=`date +%Y%m%d`
backup_path="/var/www/svn_backups/incre_back"
echo `date` >> $backup_path/svn_backup.log
for i in $repos
do
pre_youngest=`cat $backup_path/$i/youngest_revision`
#获取上次备份到的版本号
youngest=`svnlook youngest $repos_path/$i`
#获取最后提交的版本号
if [ $pre_youngest -eq $youngest ]
then
echo "$i has no new revisions to backup." >> $backup_path/svn_backup.log
continue
fi
first_youngest=$[$pre_youngest +1]
#获取新提交的版本号
if [ ! -d "$i" ];
then
mkdir -p $backup_path/$i
fi
svnadmin dump --incremental --revision $first_youngest:$youngest $repos_path/$i > $backup_path/$i/$i.inc.$Date
#备份新提交的版本到最后提交的版本
if [ $? -eq 0 ];
then
echo "$i backup success"
else
echo "$i backup failed"
fi
echo $youngest > $backup_path/$i/youngest_revision
done
增量恢复
#!/bin/bash
#create by wzstart@126.com
#svn 全量恢复脚本
repos_path="/var/www/svn"
Date=`date +%Y%m%d`
backup_path="/var/www/svn_backups/incre_back"
#备份文件
repos=`ls $backup_path`
echo `date` >> $backup_path/svn_load.log
for i in $repos
do
cd $backup_path
if [ -d "$i" ]
then
cd $repos_path
#判断svn对应仓库是否已经创建
if [ ! -d $i ]
then
svnadmin create $i
fi
cd $backup_path/$i
svnadmin load $repos_path/$i < $i.inc.$Date
echo "$Date `date` : $i load .... to backup." >> $backup_path/svn_load.log
fi
done
#主机
#每小时执行一次增量的svn备份
00 * * * * sh /var/www/svn_backups/incre_back/incre_backup.sh
#每天22点10分执行全量备份
10 22 * * * * sh /var/www/svn_backups/full_back/full_backup.sh
#查看定时任务---备机
corntab -e
20 * * * * sh /var/www/svn_backups/incre_back/incre_load.sh
40 23 * * * cp -au /var/www/svn_backups/full_back/ /var/www/svn_copy_back/
有什么问题和建议,或者脚本有何不足之处,欢迎留言,共同修正,避免重复制造轮子!