利用svnadmin hotcopy可以实现完全备份,但不能进行增量备份。svnadmin hotcopy是将整个库都“热”拷贝一份出来,包括库的钩子脚本、配置文件等;任何时候运行这个脚本都得到一个版本库的安全拷贝,不管是否有其他进程正在使用版本库。

    优点是:备份过程较快,灾难恢复也很快;如果备份机上已经搭建了svn服务,甚至不需要恢复,只需要进行简单配置即可切换到备份库上工作。

    缺点是:比较耗费硬盘,需要有较大的硬盘支持。
    在/data/svnbackup目录建立备份脚本svnbak.sh,假如svn仓库路径为/home,要备份到/data/svnbackup/
    [

    ](https://blog.csdn.net/u012808603/article/details/96045045)
    svn备份脚本

    1. #!/bin/bash
    2. #
    3. # Filename: svnbak.sh
    4. # Revision: 1.0
    5. # Date: 2019/02/21
    6. # Author: Scott
    7. # Email: 79305495@qq.com
    8. # Description: SVN完全备份
    9. # Notes: 将脚本加入crontab中,每天定时执行
    10. MAXDAYS=7 # 备份保留最大天数
    11. ##Subversion的安装目录及执行文件
    12. SVN_HOME=/usr/bin
    13. SVN_ADMIN=$SVN_HOME/svnadmin
    14. SVN_LOOK=$SVN_HOME/svnlook
    15. ##配置库根目录
    16. SVN_REPOROOT=/home
    17. ##增量备份文件存放路径
    18. BAKDIR=/data/svnbackup
    19. date=$(date '+%Y%m%d%H%M%S')
    20. RAR_STORE=$BAKDIR/$date
    21. BAKLOG=${BAKDIR}/$date.log # 定义备份日志
    22. if [ ! -d "$RAR_STORE" ];then
    23. mkdir -p $RAR_STORE
    24. exec 1>$BAKLOG
    25. exec 2>&1
    26. set -x
    27. fi
    28. # 删除历史备份
    29. find $BAKDIR/ -type f -mtime +$(expr $MAXDAYS - 1) -exec rm -f {} \;
    30. ##读取项目库列表
    31. cd $SVN_REPOROOT
    32. for name in $(ls)
    33. do
    34. ##开始做全量备份
    35. $SVN_ADMIN hotcopy $SVN_REPOROOT/$name $RAR_STORE/$name
    36. $SVN_LOOK youngest $RAR_STORE/$name
    37. done
    38. cd $BAKDIR
    39. # 压缩备份
    40. tar cvzf $date.tar.gz $date/
    41. rm -rf $date

    设置定时crontab 每天23点59分开始执行脚本:

    yum install crontabs -y
    vi /etc/crontab
    59 23 * * * /bin/bash /data/svnbackup/svnbak.sh