svn dump 全自動備份指令碼
原文:http://carywu.blog.51cto.com/13185/207571
最近要給美國的SVN伺服器做升級,由於這臺伺服器有一定年份了,在本公司也算是個三朝元老,儲存了多少code啊!。為了保險起見,老闆將遷移的工作鄭重的交到我的手上。在欣欣然的同時也顫抖著。
不過還好我已經對其輕車熟路,在新的伺服器上安裝好apache和subversion軟體後,開始著手備份與遷移了。
由於舊伺服器版本太低,沒有svnsync的功能,考慮再三,我選擇使用了svnadmin dump去做備份。
可是有一個問題了,每個庫的版本都有幾萬了,然後伺服器上有十幾個庫,我可沒耐心一個個輸入svnadmin dump去備份它們,那會讓我覺得長夜漫漫,難於睡眠!
管理員的最高境界就是花力氣去懶惰,我很嚮往這個境界。所以,我花了些時間寫了個shell,就讓系統自己去幹這些事情吧!
shell功能:
只需要大家修改源庫所在的目錄,和備份存放的目錄就可以了。
第一次執行會全部備份,然後以後每次執行會增量備份。
所以,恢復的時候,先恢復全部備份,然後依次按照日期恢復增量備份即可。
#########################################################
# this script. is used for svn repository backup
# written: carywu
# date: 2008/11/21
#########################################################
###################################
# mail address for status updates
# - This is used to email you a status report
###################################
MAILADDR=carywu@yahoo.cn
###################################
# backup directory,please change it
# - This is the path to the backup directory
###################################
BACKUPDIR=/svnroot/svnback
###################################
# svn repository directory, please change it.
# - This is the path to the directory you want to archive
###################################
SVNDIR=/svnroot/repository
###################################
# HOSTNAME and project list
# - This is also used for reporting
###################################
ProjectLst=$BACKUPDIR/projectlist.txt
###################################
# svn backup log path and date
# - This is used to log result
###################################
LogFile=$BACKUPDIR/svnback.log
DATE=`date +%Y%m%d-%T`
###################################
# svn command path
# - This is the path to the directory you want to archive
###################################
export PATH=$PATH:/bin:/usr/bin:/usr/local/bin
# our actual rsyncing function
do_accounting()
{
echo " " >> $LogFile
echo " " >> $LogFile
echo "###########################" >> $LogFile
echo "$DATE" >> $LogFile
echo "###########################" >> $LogFile
cd $BackDir
}
do_svndump()
{
PROJECTLIST=`cat $ProjectLst`
cd $SVNDIR
for project in $PROJECTLIST
do
echo "begin to dump $project databases" >> $LogFile
if [ ! -f $BACKUPDIR/$project.dump ]
then
YOUNGEST=`svnlook youngest $project`
svnadmin dump $project > $BACKUPDIR/$project.dump
echo "OK,dump file successfully!!"
echo "$YOUNGEST" > $BACKUPDIR/$project.youngest
else
echo "$project.dump existed,will do increatment job" >> $LogFile
if [ ! -f $BACKUPDIR/$project.youngest ]
then
echo "error, no youngest check!" >> $LogFile
else
PREVYOUNGEST=`cat $BACKUPDIR/$project.youngest`
NEWYOUNGEST=`svnlook youngest $project`
if [ $PREVYOUNGEST -eq $NEWYOUNGEST ]
then
echo " no database updated!" >> $LogFile
else
LASTYOUNGEST=`expr $PREVYOUNGEST + 1`
echo "last youngest is $LASTYOUNGEST" >> $LogFile
svnadmin dump $project --revision $LASTYOUNGEST:$NEWYOUNGEST --incremental > $BACKUPDIR/$project-$LASTYOUNGET-$NEWYOUNGEST.$DATE
echo "$NEWYOUNGEST" > $BACKUPDIR/$project.youngest
fi
fi
fi
done
}
# our post rsync accounting function
do_mail()
{
mail $MAILADDR -s svn-back_log < $LogFile
}
# some error handling and/or run our backup and accounting
do_accounting && do_svndump && do_mail
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23141985/viewspace-713635/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 自動備份指令碼指令碼
- MySQL自動備份指令碼MySql指令碼
- oracle自動冷備份指令碼Oracle指令碼
- ORACLE自動備份shell指令碼Oracle指令碼
- rman 自動備份指令碼-windows指令碼Windows
- rman 全備份指令碼指令碼
- windows下rman自動備份指令碼Windows指令碼
- oracle 自動冷備份指令碼(轉)Oracle指令碼
- RMAN全庫備份指令碼指令碼
- MySQL自動備份指令碼30天自動刪除MySql指令碼
- shell 備份檔案指令碼+自動清理指令碼
- Oracle自動備份指令碼的實現Oracle指令碼
- windows部分聯機自動備份指令碼!Windows指令碼
- suse下oracle的自動備份指令碼Oracle指令碼
- TSM+RMAN 自動備份指令碼 on aix指令碼AI
- Windows環境PgSql自動備份指令碼WindowsSQL指令碼
- Python 自動備份SVN版本庫並複製到遠端主機指令碼Python指令碼
- svn and maven 自動部署shell指令碼Maven指令碼
- RMAN定時全備份指令碼指令碼
- 資料庫全備份指令碼資料庫指令碼
- 【BASIS】HANA備份指令碼,Catalog自動清理指令碼
- 設定自動匯出(exp)備份指令碼指令碼
- windows 全量+增量備份指令碼batWindows指令碼BAT
- mysqldump 全量和增量備份指令碼MySql指令碼
- linux下rman增量備份指令碼以及指令碼自動執行Linux指令碼
- Oracle Windows平臺自動排程備份指令碼OracleWindows指令碼
- rman映像copy自動備份的一個指令碼指令碼
- oracle自動備份,儲存每天備份日誌的指令碼編寫Oracle指令碼
- Oracle 11g EXPDP、RMAN自動備份SHELL指令碼Oracle指令碼
- 設定週期性自動執行備份指令碼指令碼
- 一個簡單的自動備份alert log指令碼指令碼
- MySQL自動備份指令碼及異地定時FTPMySql指令碼FTP
- Linux ftp 自動上傳備份檔案指令碼LinuxFTP指令碼
- windows下自動備份指令碼(exp)Windows指令碼
- RMAN相容性、控制檔案自動備份、儲存時間、備份策略、備份指令碼(二)指令碼
- 利用ant指令碼 自動構建svn增量/全量 系統程式升級包指令碼
- 備份指令碼指令碼
- 自動定時備份 mysql 資料庫 的 shell 指令碼MySql資料庫指令碼