利用svnadmin hotcopy可以实现完全备份,但不能进行增量备份。svnadmin hotcopy是将整个库都“热”拷贝一份出来,包括库的钩子脚本、配置文件等;任何时候运行这个脚本都得到一个版本库的安全拷贝,不管是否有其他进程正在使用版本库。
优点是:备份过程较快,灾难恢复也很快;如果备份机上已经搭建了svn服务,甚至不需要恢复,只需要进行简单配置即可切换到备份库上工作。
缺点是:比较耗费硬盘,需要有较大的硬盘支持。
在/data/svnbackup目录建立备份脚本svnbak.sh,假如svn仓库路径为/home,要备份到/data/svnbackup/
[
](https://blog.csdn.net/u012808603/article/details/96045045)
svn备份脚本
#!/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/binSVN_ADMIN=$SVN_HOME/svnadminSVN_LOOK=$SVN_HOME/svnlook##配置库根目录SVN_REPOROOT=/home##增量备份文件存放路径BAKDIR=/data/svnbackupdate=$(date '+%Y%m%d%H%M%S')RAR_STORE=$BAKDIR/$dateBAKLOG=${BAKDIR}/$date.log # 定义备份日志if [ ! -d "$RAR_STORE" ];thenmkdir -p $RAR_STOREexec 1>$BAKLOGexec 2>&1set -xfi# 删除历史备份find $BAKDIR/ -type f -mtime +$(expr $MAXDAYS - 1) -exec rm -f {} \;##读取项目库列表cd $SVN_REPOROOTfor name in $(ls)do##开始做全量备份$SVN_ADMIN hotcopy $SVN_REPOROOT/$name $RAR_STORE/$name$SVN_LOOK youngest $RAR_STORE/$namedonecd $BAKDIR# 压缩备份tar cvzf $date.tar.gz $date/rm -rf $date
设置定时crontab 每天23点59分开始执行脚本:
yum install crontabs -y
vi /etc/crontab
59 23 * * * /bin/bash /data/svnbackup/svnbak.sh
