转自 : http://www.cnblogs.com/lidabo/p/4633152.html
转自:http://www.cnblogs.com/chenjiahe/p/5730048.html
一、备份VisualSVN项目
1. 现在要使用Linux作为svn服务器,之前是在windows Server 2008上的,用的是VisualSVN, 如下图所示。
2. 现在svn中有一个项目fpp,需要将fpp这个项目导出到linux环境下。运行cmd,输入命令 svnadmin dump E:\Repositories\fpp >
e:\svnbak\fpp.dump将项目导出到e:\svnbak目录下。运行结果如下:
3. 可见命令会导出每个版本的详细信息,保证了之前的历史信息不会丢失。现在我们便得出备份文件fpp.dump,如下:
4. 利用批处理实现项目的批量导出,编写svnbak.bat, 双击运行,会一次性导出所有项目,结果如下图:
二、上传备份文件到Linux
1. 利用ftp, ssh等工具将fpp.dump文件传输到Linux服务器上,这里利用直接利用openSSH这个软件上传。如图,文件上传成功,文件的路径为/root/fpp.dump。
三、Linux下SVN的安装与配置
1. Linux下安装svn,这里直接利用yum命令进行安装。yum install subversion完成subversion的安装。
2. 建立版本库目录svndata。
mkdir /svndata
svnserve -d -r /svndata #启动svn,设置版本库目录为/svndata
killall svnserve #关闭svn
3. 建立项目库
svnadmin create /svndata/fpp
4. 配置用户访问权限
cd /svndata/fpp/conf
vi svnserve.conf
释放如下几行的注释
anon-access=none
auth-access=write
password-db=passwd
5. 增加访问用户,格式为(username = password),等号两边要加空格,否则无效。如下图,没有加空格,就一直没用:
6. svn的命令这里不作介绍,大家自己去学习使用。
四、导入备份文件
1. 输入命令:svnadmin load /svndata/fpp < /root/fpp.dump,运行结果如下:
2. 为了避免逐个导入项目,所以写了一个shell脚本,进行批量导入,遍历备份目录下所有*.dump文件,并产生相应的导入命令,15个项目,花了10分钟左右完成导入,脚本如下:
五、客户端进行代码的检出
1.windows端安装TortoiseSVN, 右键svn checkout
2. 在打开的对话框中,输入svn库的地址,确定便可以同步项目。地址如下,ip地址加项目名称,如图:
3. svn提示检出成功,在目录下可以找到检出的项目。
4. 对于以前的项目,重定向到新的svn服务器,右键->TortoiseSVN->Relocate,在弹出的对话框中填写新的地址,TortoiseSVN会提示修改成功,之后,就可以使用新的svn了。
5. 如果你是使用eclipse中的subeclipse的插件,首先打开svn资源库视图,然后选择你的项目,右键选择重定向,填入新的svn地址。
6. linux下若使用svn命令的话,形式如下:
svn switch --relocate (Old Repository Root) (New Repository Root)
另附 linux svn 备份 和 恢复
linux中SVN备份有三种方式
1、svnadmin dump 是官方推荐的备份方式,优点是比较灵活,可以全量备份也可以增量备份,并提供版本恢复机制。
缺点是版本数过大,增长到数万以上,那么dump与load过程都将非常慢,耗时长不利于快速进行灾难恢复。在版本数较小的情况下可以使用这种备份方式。
2、svnadmin hotcopy 只能进行全量拷贝,不能进行增量备份。优点是备份较快,恢复也快。缺点是比较耗费硬盘。
3、svnsync实际是制作2个镜像库,当一个坏了的时候可以迅速切换到另一个。需1.4以上版本支持,这里不讨论。
svnadmin dump方式:
1、全量备份一个仓库:
#svnadmin dump /svn/svn/APP > /svn/svndump/APP_dump160802
在另一台机器上配置同样的SVN服务器导入dump出来的备份文件
#svnadmin load /svn/svn/APP < APP_dump160802
将原先服务器的配置文件备份后复制到新服务器中 authz、passwd、svnserver.conf
2、增量备份
#svnadmin dump /svn/svn/APP -r 5200:5600 --incremental > /svn/svndump/APP_5600
5200是上次全量备份时的最新版本,5600是当前最新版本。
导入:svnadmin load /svn/svn/APP < APP_5600
svnadmin hotcopy方法:
1. 备份
svnadmin hotcopy /svn/svn/APP/ /data/svn.`date +%F:%T`.bak –clean-logs
如果传递–clean-logs选项,svnadmin会执行热拷贝操作,然后删除不用的Berkeley DB日志文件。
你可以在任何时候运行这个命令得到一个版本库的安全拷贝,不管其它进程是否使用这个版本库。
2. 还原
svnadmin hotcopy /home/svn.`date +%F:%T`.bak /home/svn.`date +%F:%T`.bak