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

       即可完成建立新同步关系和代码同步。

       

你可能感兴趣的:(SVN备份与恢复)