利用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