Linux环境下SVN代码库从旧服务器迁移到新服务器的步骤详解

2023-11-17 10:53:33 浏览数 (2)

曾几何时我也是个能糊弄就糊弄的小白,不知道是年级大了还是其他什么别的原因所致,遇到问题不在敷衍,总想着解决问题,就好比这次,因为旧主机磁盘已满想着续费不划算就趁着阿里搞活动新购一台,但是之前的数据多而杂且项目带有SVN库,如果是简简单单迁移还好说,毕竟备份恢复就完成了,这次我想着能不能把SVN也备份到新服务器直接使用,最终在我测试了36个小时之后得到的答案是【可以】,不然也不会有这篇文章了吧,哈哈~可能是因为比较笨,用时较长,哎反正不管怎么说这次SVN的备份和迁移算是尘埃落地,以下是我此次备份和迁移的过程。

准备工作:

首先是备份网站的代码和数据库,但是不要备份网站根目录的【.svn】文件夹,因为这个svn都有自己的ID复制过去也不能直接使用而且还容易出错,正常本分还原即可。然后在【新服务器】安装和部署SVN功能,不会部署的直接参考【宝塔linux面板搭建SVN控制系统的图文教程】(仅仅参考到建库就行,后面的暂时不用),为了确定不出错也为了使记忆不混乱建议SVN库的名称设置跟【旧服务器】相同。 然后开始备份网站数据和数据到新服务器,也就是平常说的源代码和数据库,迁移完成后记得删除网站根目录的【.svn】文件夹,必须删除,必须删除,必须删除。

旧服务器操作步骤

首先在【旧服务器】进入下需要备份的SVN库的目录下,比如我要备份的是【svngnqy】,那就输入代码:

代码语言:javascript复制
cd /www/svndata/svngnqy

进到目录后运行:

代码语言:javascript复制
svnadmin dump /www/svndata/svngnqy/ > svngnqy.dump

代码解读是将【旧服务器】上SVN代码库目录【svngnqy】 ,备份成【svngnqy.dump】为了方便记忆我用的名称都是相同的,代码完成后如图:

因为我使用新的SVN库做测试,所以内容比较少,这时候如果去SVN库目录我们就能看见这个备份的文件(下图有),备份完成后有两种方案下载,

第一种(不建议)方案

敲代码,在【新服务器上】输入代码:

代码语言:javascript复制
scp -v  root@旧服务器的IP地址:/www/svndata/svngnqy/svngnqy.dump  /www/svndata/svngnqy

因为我们之前已经备份完成,现在需要在远程服务器下载到新服务器上,因为之前建的库就是相同的名称,所以仅供参考,把目录和名称换成实际库名。另外在输入旧服务器的root账号密码时要用【root】密码,而不是SVN库的,别问我怎么知道的,如图:

第二种(建议)方案:

建议使用FTP等传输工具测试,毕竟我测试的svn库数据较小,如果大的话很浪费时间,如图这是使用代码迁移完成的,最下面就是备份的svn数据。下载备份好的文件,然后上传到【新服务器】,如图:

【新服务器】操作步骤

还原svn库之前,确保网站源代码和数据已经恢复完成且访问正常,这个的还原仅仅针对SVN库的数据,不包含网站和数据,别弄错了。

在【新服务器】再次进入SVN库的所在目录,如下图,第一次没有在目录下进行的,所以出错,这里说下这个SVN库是前期准备工作建立的,如果没有建立需要先按照正常的顺序新建SVN库,名称可以跟旧服务器相同,以免弄错。

代码语言:javascript复制
cd /www/svndata/svngnqy

然后再次输入还原命令:

代码语言:javascript复制
svnadmin load /www/svndata/svngnqy < svngnqy.dump

如图所示,切记要进cd到对应目录下才能输入还原命令。

将【svngnqy.dump】 < ( 写入 ) 到新服务器上【svngnqy 】的这个仓库中,过程根据文件大小决定,我的很小所以很快,如图成功。

到现在已经完成了备份和迁移的【80%】,剩余的【20%】就简单了,刚刚不是说参考【宝塔linux面板搭建SVN控制系统的图文教程】到新建库吗,接下来就是设置访问权限等操作了,教程有,不过有个简单的办法,那就是直接下载【旧服务器】SVN库下的【conf】和【/hooks/】目录下的【post-commit】文件,然后给予【post-commit】文件【755】权限,最后直接输入同步代码:

代码语言:javascript复制
svn checkout svn://新服务器IP/svngnqy /www/wwwroot/liblog.cn

其中【svngnqy】是SVN库的名称,【/www/wwwroot/liblog.cn】是指网站目录的路径,确定完成之后按回车,如图:

同步完成之后我们只需要在本地【看好是本地的.svn文件夹,别再去删除服务器的】文件目录下删除【.svn】文件,然后将【旧服务器】IP地址更换成【新服务器】IP地址,然后【检出】即可,会提示什么非空,点击是自动同步了,好了,到目前为止教程步骤详解完成,该说不说哈,我愿称此文为我年度最佳文章,先不说字数多少,单单这个教程就是我找个好多个文章才摸索出来的,很有成就感,当然也可能是我不会搜索,没找到好用的教程,总之教程的算是完成了,接下来我就得挨个是备份下载和还原了,相信我接下来又会好长时间看不见我的文章,为什么?因为文章迁移的工作大且无聊,好了,有问题的留言反馈吧,反正我也不能解决,我就看看我不说话!!!

0 人点赞