svn dump 全自動備份指令碼

來源:互聯網
上載者:User

最近要給美國的SVN伺服器做升級,由於這台伺服器有一定年份了,在本公司也算是個三朝元老,儲存了多少code啊!。為了保險起見,老闆將遷移的工作鄭重的交到我的手上。在欣欣然的同時也顫抖著。
不過還好我已經對其輕車熟路,在新的伺服器上安裝好apache和subversion軟體後,開始著手備份與遷移了。
由於舊伺服器版本太低,沒有svnsync的功能,考慮再三,我選擇使用了svnadmin dump去做備份。
可是有一個問題了,每個庫的版本都有幾萬了,然後伺服器上有十幾個庫,我可沒耐心一個個輸入svnadmin dump去備份它們,那會讓我覺得長夜漫漫,難於睡眠!
管理員的最高境界就是花力氣去懶惰,我很嚮往這個境界。所以,我花了些時間寫了個shell,就讓系統自己去幹這些事情吧!

shell功能:
只需要大家修改源庫所在的目錄,和備份存放的目錄就可以了。
第一次運行會全部備份,然後以後每次運行會增量備份。

所以,恢複的時候,先恢複全部備份,然後依次按照日期恢複增量備份即可。

#!/bin/sh########################################################## 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.logDATE=`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 functiondo_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 functiondo_mail(){   mail $MAILADDR -s svn-back_log < $LogFile}# some error handling and/or run our backup and accountingdo_accounting && do_svndump && do_mail

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.