svn 備份

隨着業務的拓展和開發的深刻,svn開發庫的體積愈來愈龐大。原先天天凌晨對開發庫進行全庫備份的作法知足不了新的需求,因而考慮到對svn庫作增量備份。基於時間和精力有限的前提下,咱們首先考慮使用shell腳本實現,採用最土的svnadmin dump方式。花最少的時間,達到最想要的結果,無需大段華麗的代碼,簡單有效便可。 shell


首先是全庫備份腳本,計劃每一個月1號的凌晨1點運行一次,凌晨1點程序猿更新代碼的概率大體爲零。 svn

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
[root@dev ~]# echo '00 01 1  *  *    /usr/local/scripts/incr0_svn.sh' > /var/spool/cron/root 
[root@dev ~]# cat /usr/local/scripts/incr0_svn.sh
#!/bin/sh
DATE=$(date +%Y%m%d:%H:%M:%S)       #定義時間變量,用於文件名後綴
SVN_DIR=/svn_data/jsb               #定義SVN庫目錄變量
SVN_BAK_DIR=/svn_data/backup/       #定義備份文件存放目錄變量
echo '0' > /tmp/jsb_svn_id          #初始化版本號,全庫備份必定是從0版本號開始
NUM1=$(cat /tmp/jsb_svn_id)         #取初始化版本號
NUM2=$(svnlook youngest $SVN_DIR)   #取當前最新的版本號
#開始備份
svnadmin dump $SVN_DIR  -r $NUM1:$NUM2  --incremental >  $SVN_BAK_DIR/jsb_bak_$DATE   
#判斷備份是否成功,若成功,則記錄當前最新的版本號到臨時文件中,用於下次增量備份使用
if [ $? -eq 0 ];
    then
    echo $NUM2 > /tmp/jsb_svn_id
    else
    echo "backup fail...."
fi


其次是增量備份腳本,計劃天天凌晨2點運行一次 spa

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
[root@dev ~]# echo '00 02 *  *  *    /usr/local/scripts/incr1_svn.sh' > /var/spool/cron/root 
[root@dev ~]# cat /usr/local/scripts/incr1_svn.sh
#!/bin/sh
DATE=$(date +%Y%m%d:%H:%M:%S)       #定義時間變量,用於文件名後綴
SVN_DIR=/svn_data/jsb               #定義SVN庫目錄變量
SVN_BAK_DIR=/svn_data/backup/       #定義備份文件存放目錄變量
NUM1=$(cat /tmp/jsb_svn_id)         #取初始化版本號
NUM2=$(svnlook youngest $SVN_DIR)   #取當前最新的版本號
#開始備份
svnadmin dump $SVN_DIR  -r $NUM1:$NUM2  --incremental >  $SVN_BAK_DIR/jsb_bak_$DATE   
#判斷備份是否成功,若成功,則記錄當前最新的版本號到臨時文件中,用於下次增量備份使用
if [ $? -eq 0 ];
    then
    echo $NUM2 > /tmp/jsb_svn_id
    else
    echo "backup fail...."
fi
相關文章
相關標籤/搜索