1. 程式人生 > >SVN備份與恢復

SVN備份與恢復

      SVN程式碼的備份至少有三種方法,這裡只是說下用svnsync命令的備份和恢復過程。

      svnsync命令是建立兩個完全相同的程式碼庫,屬於完整同步備份,因此,如果程式碼庫已經很大了,第一次備份會非常耗時,但後續備份只是處理增量,會比較快。同時,svnsync備份和主庫完全一致,當主庫宕機後,從庫可以直接投入使用,使用上比較簡單。主庫恢復後,可以將原來的主庫作為備庫,繼續使用。主備之間可以任意切換是svnsync備份方式的優勢,當然庫IP的變化可能會引起一些麻煩。

      svnsync備份方式主要有如下幾步:

             a)在備份伺服器上建立與主伺服器 上同名的配置庫(比如:TEST),同時建立一個使用者A(A使用者須擁有主伺服器同名配置庫的讀寫許可權);
             b)在備份伺服器的配置庫目錄(D:\Repositories\ test)中的hooks資料夾下,找到pre-revprop-change.tmpl檔案,複製粘貼後改名為pre-revprop-change.bat,並清空此檔案中的內容;
             c)在備份伺服器上進入dos命令視窗,切換到svn安裝目錄的bin資料夾下執行:svnsync  init  http://[備份伺服器IP]:8080/svn/TEST http://[主伺服器IP]:8088/svn/TEST
             d)最後執行 svnsync  sync  http://[備份伺服器IP]:8080/svn/TEST即可實現同步。庫比較大時,第一次執行這一步會非常耗時。後續要同步時也只是執行此步驟即可,這時就是增量同步,相對會較快些。需要定期備份時,可以將此步驟命令寫入批處理或者shell檔案,新增定時任務即可。也可以在主庫上修改post-commit指令碼實現實時同步。以Windows批處理為例,post-commit.bat內容如下(請根據實際情況修訂):

            echo off
            set SVN_HOME="C:\Program Files\VisualSVN Server\"
            %SVN_HOME%\bin\svnsync sync --non-interactive http://[備份伺服器IP]:8080/svn/TEST --username  A  -password  A密碼

      如果主庫宕機,從庫可以直接作為主庫使用。原主庫恢復後,可以將原主庫作為備庫,此時的主庫為原備庫,在原主庫上執行命令:

      svnsync --allow-non-empty init  http://[原主庫IP]:8080/svn/TEST http://[原備庫IP]:8088/svn/TEST

      svnsync  sync  http://[原主庫IP]:8080/svn/TEST

       即可完成建立新同步關係和程式碼同步。