热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

VisualSVNServerSVN仓库迁移备份

windows系统上SVN服务端仓库迁移:1、仓库迁移(命令行)导出仓库:svnrdumpdumphttps:192.

windows系统上SVN服务端仓库迁移:

1、仓库迁移(命令行)

导出仓库:

svnrdump dump https://192.168.2.22/svn/PayCode > PayCode.dump

 指定版本:

svnrdump dump -r 3621 https://192.168.2.22/svn/PayCode > PayCode.dump

svnrdump dump -r 3600:3621 https://192.168.2.22/svn/PayCode > PayCode.dump

增量备份:

svnrdump dump -r 3600:3621 --incremental https://192.168.2.22/svn/PayCode > PayCode.dump

指定账号密码:

svnrdump dump https://192.168.2.22/svn/PayCode > PayCode.dump  --username xxx --password xxx

创建新仓库: 

svnadmin create PayCode

导入仓库: 

svnadmin load PayCode

1.1、 仓库权限迁移:

目前需要手动拷贝VisualSVN-SvnAuthz.ini文件到对应新仓库下:

注意命令行操作路径。

之前也尝试过直接拷贝整个仓库目录文件,也可以正常迁移,这种方式简单粗暴。 

2、账号密码、分组迁移

直接覆盖 Repositories 目录下 htpasswd、groups.conf 两个文件即可。

批量迁移bat脚本:

@echo offif not exist svn-reps.txt (echo svn-reps.txt file not existgoto end
)for /f %%i in (&#39;type svn-reps.txt&#39;) do (echo https://192.168.2.22/svn/%%isvnrdump dump https://192.168.2.22/svn/%%i > %%i.dumpif errorlevel 0 (echo ok1 %%isvnadmin create %%iif errorlevel 0 (svnadmin load %%i <%%i.dumpif errorlevel 0 (echo ok3 %%i) else echo error3 %%i) else echo error2 %%i) else echo error1 %%i
):end
echo Press any key to continue
pause

批量备份VisualSVN-SvnAuthz.ini权限文件bat脚本:

@echo offset copyToDir=C:\Users\Administrator\Desktop\repsqxbakfor /d %%i in (*) do (echo %%imd %copyToDir%\%%i\confcopy %%i\conf\VisualSVN-SvnAuthz.ini %copyToDir%\%%i\conf
):end
echo Press any key to continue
pause

直接把脚本放到Repositories目录下执行即可,执行完之后需要手动删除所有的*.dump 文件。

svn-reps.txt 为老仓库导出的所有仓库名称。

老仓库权限文件备份后,可以直接手动批量覆盖到新仓库。

20200801

客户端SVN仓库地址切换:

svn relocate https://192.168.2.222/svn/PayCode/

仓库uuid不一致问题处理:

服务端重新设置仓库uuid,和老仓库uuid保持一致:

svnlook uuid E:\Repositories\PayCode

svnadmin setuuid E:\Repositories\PayCode a6835852-ec45-0344-aa83-3cc38ed4f3dd

特别注意:

如果服务器上同时安装了SVN客户端TortoiseSVN,环境变量中的命令可能不是服务端VisualSVN Server的,可以使用全路径执行命令或者命令行定位到VisualSVN Server\bin目录下执行命令!

批量备份仓库uuid脚本:

@echo offif not exist svn-reps.txt (echo svn-reps.txt file not existgoto end
)rem 旧仓库目录
set repsPath=E:\Repositories
rem 新仓库目录
set repsNewPath=E:\Repositoriesfor /f %%i in (&#39;type svn-reps.txt&#39;) do ( for /f %%u in (&#39;svnlook uuid %repsPath%\%%i&#39;) do (rem 直接保存设置uuid完整命令!echo svnadmin setuuid %repsNewPath%\%%i %%u >>svn-reps-uuid.txtif errorlevel 0 (echo OK %%i %%u) else (echo ER %%i %%u))
):end
echo Press any key to continue
pause

批量设置uuid脚本(基于上一个uuid备份脚本,备份的就是设置uuid的完整命令):

@echo offif not exist svn-reps-uuid.txt (echo svn-reps-uuid.txt file not existgoto end
)for /f "delims=""" %%i in (&#39;type svn-reps-uuid.txt&#39;) do ( echo %%i%%iif errorlevel 0 (echo OK %%i) else (echo ER %%i)
):end
echo Press any key to continue
pause

20200803

这两天帮公司迁移SVN仓库,好几年的项目代码都在上面,仓库文件夹总大小200G左右。正真迁移的数据量远大于200G,所以要准备好足够大的硬盘。

VisualSVN Server 估计还是好几年前的版本,新版的浏览器客户端比较好看,功能也更多了。

迁移过程还是比较顺利的,按上面写的脚本来就行。迁移过程中,最大的问题还是个别仓库太大,导致远程拉备份dump文件要花费大量时间。后面迁移可能要注意下,优先迁移最近活跃的仓库,有的仓库几年没更新,早一天晚一天迁移影响不大。如果仓库太大,可以考虑按版本迁移,先把最近的版本迁移过来,不影响正常使用。

还有就是可以先拉仓库备份,拉完之后再进行还原操作,如果你的服务器配置很高,还原很快的话那就无所谓了。

仓库太多,服务器带宽够高的话,可以多开几个脚本进程,同时拉多个仓库的备份。

备份的dump文件可能远比实际仓库文件夹大很多!

我在新服务器还原dump时并未出现uuid不一致问题,使用的版本是:VisualSVN-Server-4.2.2-x64.msi,出现uuid不一致可能是因为工具版本问题。

仓库迁移完之后,如果不想立马更换仓库地址,可以在老服务器临时配个nginx,加个反向代理。我这边因为个别仓库太大,迁移了周日一整天,还有三个大仓库没拉好,无奈只能先走代理,迁移完的走新仓库,没迁移好的还走老仓库。

后面单个仓库尽量不能搞太大,否则迁移备份太麻烦!!!

迁移过程中还发现两个神器:spacesniffer 和 wiztree, 可以方便查看文件夹大小分布。

20200804

Hooks未同步。

20211204

svnsync 同步方式也不错!

20220822

node js备份脚本:

const FS = require("fs");const { exec } = require(&#39;child_process&#39;);async function backup() {const repsString = FS.readFileSync("./svn-reps.txt").toString();const reps = repsString.split("\n").map(e => { return {name: e.split(" ")[0],version: e.split(" ")[1]};}).filter(e => e.name && e.version && e.name !== &#39;Name&#39;);for (let index = 0; index ./Repositories/${rep.name}/${rep.version}/${rep.name}.dump --username xxx --password zzz`);} catch (error) {console.log(error);}}
}function exe(cmd) {return new Promise((resolve, reject) => {exec(cmd, (error, stdout, stderr) => {if (error || stderr) {reject({ error, stderr });return;}resolve(stdout);});});
}backup();

svn-reps.txt 文件(所有仓库名称和最新版本号)可用SVN服务端直接导出。

第一次进行全量备份,后面进行增量备份(每次备份记录备份的版本号或版本范围)。

20220901

使用VisualSVN Server Manager直接Backup仓库(*.vsvnbak), Restore仓库(还原),这个方式备份体积和还原速度似乎最佳(备份任务、远程连接,需要购买企业版?申请45天免费许可证)。


推荐阅读
  • 本文介绍了使用cacti监控mssql 2005运行资源情况的操作步骤,包括安装必要的工具和驱动,测试mssql的连接,配置监控脚本等。通过php连接mssql来获取SQL 2005性能计算器的值,实现对mssql的监控。详细的操作步骤和代码请参考附件。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文介绍了通过ABAP开发往外网发邮件的需求,并提供了配置和代码整理的资料。其中包括了配置SAP邮件服务器的步骤和ABAP写发送邮件代码的过程。通过RZ10配置参数和icm/server_port_1的设定,可以实现向Sap User和外部邮件发送邮件的功能。希望对需要的开发人员有帮助。摘要长度:184字。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文介绍了在使用Python中的aiohttp模块模拟服务器时出现的连接失败问题,并提供了相应的解决方法。文章中详细说明了出错的代码以及相关的软件版本和环境信息,同时也提到了相关的警告信息和函数的替代方案。通过阅读本文,读者可以了解到如何解决Python连接服务器失败的问题,并对aiohttp模块有更深入的了解。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 本文介绍了在Windows环境下如何配置php+apache环境,包括下载php7和apache2.4、安装vc2015运行时环境、启动php7和apache2.4等步骤。希望对需要搭建php7环境的读者有一定的参考价值。摘要长度为169字。 ... [详细]
  • 本文介绍了如何使用C#制作Java+Mysql+Tomcat环境安装程序,实现一键式安装。通过将JDK、Mysql、Tomcat三者制作成一个安装包,解决了客户在安装软件时的复杂配置和繁琐问题,便于管理软件版本和系统集成。具体步骤包括配置JDK环境变量和安装Mysql服务,其中使用了MySQL Server 5.5社区版和my.ini文件。安装方法为通过命令行将目录转到mysql的bin目录下,执行mysqld --install MySQL5命令。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
author-avatar
芸阁__907
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有