隨著業務的拓展和開發的深入,svn開發庫的體積越來越龐大。原先每天凌晨對開發庫進行全庫備份的做法滿足不了新的需求,於是考慮到對svn庫做增量備份。基於時間和精力有限的前提下,我們首先考慮使用shell指令碼實現,採用最土的svnadmin dump方式。花最少的時間,達到最想要的結果,無需大段華麗的**,簡單有效即可。
首先是全庫備份指令碼,計畫每個月1號的凌晨1點執行一次,凌晨1點程式猿更新**的機率大致為零。
[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點執行一次
[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
簡單實現SVN增量備份
隨著業務的拓展和開發的深入,svn開發庫的體積越來越龐大。原先每天凌晨對開發庫進行全庫備份的做法滿足不了新的需求,於是考慮到對svn庫做增量備份。基於時間和精力有限的前提下,我們首先考慮使用shell指令碼實現,採用最土的svnadmin dump方式。花最少的時間,達到最想要的結果,無需大段華麗的...
SVN增量備份一 svnsync
源庫 8001 svn projects 新建的 庫 要求 8001 svn projects是開發的 源庫,http localhost svn projects是源庫的映象庫,做增量備份。1.建立bat檔案pre revprop change.bat echo changing revision...
SVN增量備份一 svnsync
源庫 8001 svn projects 新建的 庫 要求 8001 svn projects是開發的 源庫,http localhost svn projects是源庫的映象庫,做增量備份。1.建立bat檔案pre revprop change.bat echo changing revision...