SVN备份和恢复脚本(增量和全量)svnadmin dump和load linux服务器

全量备份

#!/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/

有什么问题和建议,或者脚本有何不足之处,欢迎留言,共同修正,避免重复制造轮子!

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值