Subversion的WebDAV 模式就是Subversion和Apache2集成后的运行模式,Debian下这一模式的实现可以参考
http://www.subversion.org.cn/svnbook/1.2/index.html 或者http://man.chinaunix.net/linux/debian/debian_learning/ch09s14.html
只需注意这两个文档的最后添加用户的地方都存在一点小问题,添加第二个用户的时候不需要有参数-c了,而且在Debian环境下,其实没有htpasswd2而只有htpasswd这个命令。
我们假定Subversion的WebDAV 在Debian下已经配置成功,访问地址是http://hostname/svn,Subversion实际库采用FSFS数据存储结构,放置在/var/svnlib下。
我们要动态备份/var/svnlib到/back/svnlib_bak,/back是不同于/var的独立磁盘分区,这样才有更高的安全度。
在Debian下有subversion的备份工具,安装subversion时是不自动安装的,需要单独安装,安装命令
|
这样在系统中就有了svn-fast-backup,svn-backup-dumps ,svn-hot-backup 等命令,放置在/usr/bin下面了。
我们的动态备份就是在每次提交后自动的进行增量备份,这样可以保障在/var/svnlib出故障后,可以迅速的通过拷贝/back/svnlib_bak下的数据重建版本库,甚至可以直接在apache下通过设置让/back/svnlib_bak作为临时版本库。
我们将涉及subversion的钩子脚本功能(相关内容参考http://www.subversion.org.cn/svnbook/1.2/svn.reposadmin.create.html#svn.reposadmin.create.hooks)
按要求在/var/svnlib/hooks/下创建了post-commit文件,其内容如下:
|
修改这个文件的所有者为www-data,并添加运行权限
|
保证/back目录www-data是可写的或者预先建立BACKBASE='/back/svnlib_bak并使之允许www-data是可写的。
这样所有的配置就完成了,在下次有版本提交的时候,程序会自动的在/back/svnlib_bak下建立一个名为
“svnlib-版本号”的目录,该目录是最新的/var/svnlib的一个快照。而且在/back/svnlib_bak下最多有16个(这是程序脚本中定义的,你可以设置)诸如“svnlib-版本号”的目录,它们是版本号最高的16个。
-------------------------------------------
可能有人要问为什么这叫动态备份,如果版本库很大是不是很浪费空间?
其实不用怕,因为svn-fast-backup会自动搜索备份目标下的相同文件,它们其实只保存了一份,其它都是对应的相当于硬链接的文件,不额外增加 太多磁盘空间占用,这样实际上每个版本备份仅仅是增加了必须的,因版本改变产生的变化(包括文件的,也包括操作的历史记录等)。
参考:
http://www.subversion.org.cn/svnbook/1.2/index.html
http://www.debsir.org/main/?q=node/58
http://man.chinaunix.net/linux/debian/debian_learning/ch09s14.html

