团队里有一台SVN服务器,空间达到了几十个G,之前一直是隔段时间全盘拷贝备份,但是感觉太烦锁了,前段时间做了将这台服务器SVN的内容同步到另一台服务器上,挺好用的,总结一下,过程:操作系统:windowsserver2008SVN:VisualSVNServer服务器:A表示原来代码服务器,B表示同步服务器备份服务器安装与A相同的VisualSVNServer版本1.在B上的环境变量(path)添加:C:\ProgramFiles(x86)\VisualSVNServer\bin添加这一步主要是为了下面用到SVN的命令不用输路径2.创建库,由于A服务器已有了很多库,所以做成了批处理文件的方式,文件内容如下:svnadmincreate盘符:/Repositories/项目库1svnadmincreate盘符:/Repositories/项目库2……项目库1、2的名称与A里的一样然后执行这个批处理文件,然后Repositories会出现很多库文件夹了……3..创建目标库的hooks文件,文件名为pre-revprop-change.bat,内容为空,先放在..\sysmodel目录下4.将上步创建的文件拷到每个库文件夹下,跟上步一样,用批处理文件,文件内容:copy/y本地盘符:\Repositories\sysmodel\pre-revprop-change.bat盘符:\Repositories\项目库1\hookscopy/y本地盘符:\Repositories\sysmodel\pre-revprop-change.bat盘符:\Repositories\项目库2\hooks……然后执行这个批处理文件5.关联A与B里的库(初始化),还是用批处理:svnsyncinitfile:///本地盘符:/Repositories/项目库1项目库1的SVN路径(在A服务器上的)svnsyncinitfile:///本地盘符:/Repositories/项目库2项目库2的SVN路径(在A服务器上的)……然后执行这个批处理文件,这一步是将A的内容同步下来了,时间有点久……6.到上一步,B与A的内容一致了,但是如果A上某个库的项目库有更新怎么办呢?这时要用到windows里的任务计划功能了(1)新建同步库.bat的批处理,内容如下:svnsyncsyncfile:///本地盘符:/Repositories/项目库1svnsyncsyncfile:///本地盘符:/Repositories/项目库2……(2)新建任务计划,在计划里调用上一步建立的批处理文件。每当任务执行时,就可以将A服务器里对应项目库的更新内容差量更新下来了1、完全备份脚本:首先看一下SVN备份的完全备份。文件名backup.bat:echooffremSubversion的安装目录setSVN_HOME=C:\ProgramFiles\VisualSVNServerrem所有版本库的父目录setSVN_ROOT=d:\svn//库目录rem备份的目录setBACKUP_SVN_ROOT=目的地(如:\\192.168.0.1\svnbak)setBACKUP_DIRECTORY=%BACKUP_SVN_ROOT%\%date:~0,10%ifexist%BACKUP_DIRECTORY%gotocheckBackecho建立备份目录%BACKUP_DIRECTORY%%SVN_ROOT%/backup.logmd%BACKUP_DIRECTORY%rem验证目录是否为版本库,如果是则取出名称进行SVN备份for/r%SVN_ROOT%%%Iin(.)do@ifexist%%I\conf\svnserve.conf%SVN_ROOT%\simpleBackup.bat%%~fI%%~nIgotoend:checkBackecho备份目录%BACKUP_DIRECTORY%已经存在,请清空。gotoend:end另一个文件:simpleBackup.bat@echo正在备份版本库%1......@%SVN_HOME%\bin\svnadminhotcopy%1%BACKUP_DIRECTORY%\%2@echo版本库%1成功备份到了%2!以上是完全备份的脚本,只要把simpleBackup.bat拷到库目录底下即可使用。2、增量备份脚本:我们再来看一下SVN备份中的增量备份。文件名命名为:post-commit.bat,放到hooks下即可,echooffsetSVN_HOME=C:\ProgramFiles\VisualSVNServersetSVN_ROOT=d:\svnsetDELTA_BACKUP_SVN_ROOT=d:\delta//备份存放目录,一定要存在setLOG_FILE=%1\backup.logechobackuprevision%2%LOG_FILE%for/r%SVN_ROOT%%%Iin(.)do%SVN_ROOT%\库名\hooks\deltaBackup.bat库名%2gotoend:enddeltaBackup.bat@echo正在备份版本库%1......%SVN_HOME%\bin\svnadmindump%SVN_ROOT%\%1--incremental--revision%2%DELTA_BACKUP_SVN_ROOT%\%1.dmp@echo版本库%1成功备份到了%2!将以上两个文件:post-commit.bat和deltaBackup.bat放到hooks下就可以直接使用。注:红色字要根据实际情况来更改。本节关于SVN备份内容讲解完毕,请关注本节其他相关报道。