记录Linux系统中使用脚本命令批量备份和还原SVN仓库的代码
文章最后更新时间:2024年03月25日已超过33天没有更新。
这篇文章纯属记录,不做教程使用,毕竟之前写过关于《Linux环境下SVN代码库从旧服务器迁移到新服务器的步骤详解》的文章,喜欢折腾的童鞋可以结合这两篇文章批量备份和还原SVN仓库,为什么这么说呢?因为上次备份之后我就感觉项目站点太多了,十几二十几个每次都一个一个使用命令太慢了,耽误时间,所以这次趁着服务器到期迁移就直接尝试使用批量备份和还原。
【新服务器】批量创建仓库代码:
新建空白文件,取名“svncreate.sh”(名称可自拟)
#!/bin/bash # 定义要创建的版本库目录列表 repo_dirs=("/www/svndata/库1" "/www/svndata/库2" "/www/svndata/库2") # 遍历列表并创建每个版本库 for dir in "${repo_dirs[@]}"; do svnadmin create "$dir" done
先确定服务器SVN安装目录,然后一次创建版本库目录。
参考代码释义:
svnadmin create /www/svndata/库1
【旧服务器】批量备份脚本:
新建空白文件,取名“svndump.sh”(可自拟)
#!/bin/bash # 定义要备份的版本库目录列表 repo_dirs=("/www/svndata/库1" "/www/svndata/库2" "/www/svndata/库3") # 遍历列表并备份每个版本库 for dir in "${repo_dirs[@]}"; do svnadmin dump "$dir" > "${dir}.dump" done
命令执行完成后,会在“/www/svndata/目录下生成”库1、2、3.dump格式的备份文件,直接下载到本地,然后在【新服务器端】上传这么备份好的文件。
参考代码释义:
svnadmin dump /www/svndata/库1/ > 库1.dump
【新服务器】批量还原脚本:
新建空白文件,取名“loadsvn.sh”(可自拟)
#!/bin/bash # 定义SVN仓库目录和备份文件目录 svn_repos_dir="/www/svndata" backup_files_dir="/www/svndata" # 定义需要还原的SVN仓库名称和对应的备份文件名称 repos_backup_map=( "库1:库1.dump" "库2:库2.dump" "库3:库3.dump" ) # 遍历需要还原的SVN仓库名称和对应的备份文件名称 for repo_backup in "${repos_backup_map[@]}"; do repo_name="${repo_backup%%:*}" backup_file="${repo_backup#*:}" # 执行还原命令 svnadmin load "${svn_repos_dir}/${repo_name}" < "${backup_files_dir}/${backup_file}" done
命令执行完成后之前的数据就都回来了,这个时间可能会有点长,如果服务器配置较低可以少还原几次,别整太大死机就不好弄了。
参考代码释义:
svnadmin load /www/svndata/库1 < 库1.dump
【新服务器】批量checkout(检出)
新建空白文件,取名“checkoutsvn.sh”(可自拟)
#!/bin/bash # 定义SVN仓库URL和本地目录 svn_repos_url="svn://IP" local_dir="/www/wwwroot" # 定义需要同步的SVN仓库名称和对应的本地目录 repos_local_map=( "SVN库名:/同步网站目录" ) # 遍历需要同步的SVN仓库名称和对应的本地目录 for repo_local in "${repos_local_map[@]}"; do repo_name="${repo_local%%:*}" local_path="${repo_local#*:}" # 执行同步代码命令 svn checkout "${svn_repos_url}/${repo_name}" "${local_dir}${local_path}" done
命令执行完成后就会同步源代码的版本库,同样配置低的服务器少量运行,以免死机。
参考代码释义
svn checkout svn://IP/svn库名 /www/wwwroot/同步网站目录
03/25-解决冲突:
如果您想以目录为单位解决冲突,可以按照以下步骤操作:
首先,执行以下命令查看冲突文件:
svn status
找到处于冲突状态的目录,然后执行以下命令将服务器端的版本强制覆盖本地工作副本中的冲突目录:
svn revert --recursive /www/wwwroot/liblog.cn/zb_list svn update /www/wwwroot/liblog.cn/zb_list
其中,【/www/wwwroot/liblog.cn/zb_list】是您在第1步中找到的冲突目录。
解决完所有冲突后,将修改后的文件重新提交到SVN仓库:
svn commit -m "解决冲突,以服务器端为准"
通过以上步骤,您可以以服务器端为准,解决SVN工作副本中的冲突部分。
至此备份还原SVN版本库就已经全部操作完成,当然毕竟是批量操作,过程中可能会出现一些问题,如果出现问题那么久参考之前的文章手动恢复,毕竟单个恢复有问题可以看的清晰一些,好了,此文结束,有问题的留言反馈吧,即便真的有问题我也不会解决了,毕竟技术有限,告辞!!!
发表评论