利用svnadmin hotcopy能够实现彻底备份,但不能进行增量备份。svnadmin hotcopy是将整个库都“热”拷贝一份出来,包括库的钩子脚本、配置文件等;任什么时候候运行这个脚本都获得一个版本库的安全拷贝,无论是否有其余进程正在使用版本库。安全
优势是:备份过程较快,灾难恢复也很快;若是备份机上已经搭建了svn服务,甚至不须要恢复,只须要进行简单配置便可切换到备份库上工做。bash
缺点是:比较耗费硬盘,须要有较大的硬盘支持。
在/data/svnbackup目录创建备份脚本svnbak.sh,假如svn仓库路径为/home,要备份到/data/svnbackup/ide
#!/bin/bash # # Filename: svnbak.sh # Revision: 1.0 # Date: 2019/02/21 # Author: Scott # Email: 79305495@qq.com # Description: SVN彻底备份 # Notes: 将脚本加入crontab中,天天定时执行 MAXDAYS=7 # 备份保留最大天数 ##Subversion的安装目录及执行文件 SVN_HOME=/usr/bin SVN_ADMIN=$SVN_HOME/svnadmin SVN_LOOK=$SVN_HOME/svnlook ##配置库根目录 SVN_REPOROOT=/home ##增量备份文件存放路径 BAKDIR=/data/svnbackup date=$(date '+%Y%m%d%H%M%S') RAR_STORE=$BAKDIR/$date BAKLOG=${BAKDIR}/$date.log # 定义备份日志 if [ ! -d "$RAR_STORE" ];then mkdir -p $RAR_STORE exec 1>$BAKLOG exec 2>&1 set -x fi # 删除历史备份 $find $BAKDIR/ -type f -mtime +$(expr $MAXDAYS - 1) -exec rm -f {} \; ##读取项目库列表 cd $SVN_REPOROOT for name in $(ls) do ##开始作全量备份 $SVN_ADMIN hotcopy $SVN_REPOROOT/$name $RAR_STORE/$name $SVN_LOOK youngest $RAR_STORE/$name done cd $BAKDIR # 压缩备份 tar cvzf $date.tar.gz $date/ rm -rf $date
设置定时crontab 天天23点59分开始执行脚本:svn
yum install crontabs -y vi /etc/crontab 59 23 * * * /bin/bash /data/svnbackup/svnbak.sh