云计算百科
云计算领域专业知识百科平台

SVN打包迁移新服务器并升级

迁移原因:10.54 服务器centos要求切换为uos系统 迁移升级思路:新服务直接安装最新版本,需要安装的环境httpd 、svn dump迁移旧服务器记录到新服务器。

xx.xx.10.54 旧服务器版本号 svn1.8 xx.xx.1.116 新服务器版本号 svn 1.14

一、新服务器开始安装svn 1.14

1 解压安装包

#cd /usr/local/svn
#tar -xzvf subversion-1.14.5.tar.gz
#cd /usr/local

2 安装apr ,svn需要安装

#sudo yum install apr apr-devel apr-util apr-util-devel

查看是否安装成功,出现下图情况则安装成功

yum list installed | grep apr 在这里插入图片描述

3 安装lz4 svn提示需要安装这个

#yum install lz4 lz4-devel

4 开始安装svn

#cd /usr/local/svn/subversion-1.14.5
#./configure –with-utf8proc=internal
#make
#make install

5 安装httpd 方便浏览器访问svn

旧服务器是apache 这里直接yum安装

#yum -y install httpd
#yum -y install mod_dav_svn

6 创建或编辑subversion.conf

#vim /etc/httpd/conf.d/subversion.conf

这里SVNParentPath SVNParentPath 项目地址 AuthUserFile 用户密码 AuthzSVNAccessFile 用户权限 passwd.conf 和authz.conf 从旧服务器直接scp复制过来

<Location /svn>
DAV svn
#SVNListParentPath on
SVNParentPath /data/app/svnusr/svndata

# SSLRequireSSL
AuthType Basic
AuthName "Subversion repository"
AuthUserFile /etc/subversion/passwd.conf
AuthzSVNAccessFile /etc/subversion/authz.conf
Require valid-user
</Location>

7 传输配置文件启动svn和httpd

10.54 向1.116 传输配置文件 scp命令自己查一下

#scp -r -P 22 /etc/subversion/* root@172.20.1.116:/etc/subversion/

#chmod 777 authz.conf
#chmod 777 passwd.conf

svn 启动命令

svnserve -d -r /usr/local/svn/subversion-1.14.5

查看svn 是否启动成功 #ps -ef | grep svnserve 在这里插入图片描述

8 配置启动命令和开机自启动

[Unit]
Description=Subversion protocol daemon
After=network.target

[Service]
Type=forking
ExecStart=/usr/local/bin/svnserve -d -r /usr/local/svn/subversion-1.14.5
Restart=on-failure
ExecStop=/usr/bin/pkill -f /usr/local/bin/svnserve

[Install]
WantedBy=multi-user.target
EOF

重新加载 systemd 配置 sudo systemctl daemon-reload

启动 SVN 服务 sudo systemctl start svnserve

停止 SVN 服务 sudo systemctl stop svnserve

设置开机自启 sudo systemctl enable svnserve

9 修改httpd默认端口号80 -8001

# vim /etc/httpd/conf/httpd.conf

Httpd #systemctl start httpd #systemctl restart httpd #systemctl status httpd #systemctl enable httpd 测试:

#svnadmin create repos
#chmod -R o+rw /data/app/svnusr/svndata/repos

http://xx.xx.1.116:8001/svn/repos 提示输入用户名和密码,成功 在这里插入图片描述 在这里插入图片描述

二、 开始备份转储旧服务器svndata

#cd /home/svnusr/temp

1 项目多,一个一个dump太慢,这里使用批量脚本 10.64 服务器创建一个批量dump脚本。项目少的可挨个执行svnadmin dump 命令

#vi svn_dum_parent_dir.sh

#!/bin/bash
# 定义父目录路径
parent_dir="/home/svnusr/svndata"
# 查找父目录下的所有 SVN 项目
for project in "$parent_dir"/*; do
if [ -d "$project" ] && [ -f "$project/format" ]; then
# 提取项目名称
project_name=$(basename "$project")
# 执行转储命令
svnadmin dump –deltas "$project" > "$project_name.dump"
if [ $? -eq 0 ]; then
echo "转储 $project 成功,文件保存为 $project_name.dump"
else
echo "转储 $project 失败"
fi
fi
done

#chmod 777 svn_dum_parent_dir.sh

执行脚本,等待所有项目转储成功

#./svn_dum_parent_dir.sh

在这里插入图片描述

2 批量还原脚本

新服务器1.116

#mkdir /data/app/svnusr/svndata
#mkdir /data/app/svnusr/temp
#cd /data/app/svnusr/temp

1.116 服务器还原dump 到 /data/app/svnusr/svndata

#vi svn_load_multiple.sh

#!/bin/bash

# 定义转储文件所在的目录
dump_dir="/data/app/svnusr/temp"

# 定义新服务器上 SVN 仓库的父目录
new_repos_parent_dir="/data/app/svnusr/svndata"

# 遍历转储文件目录下的所有转储文件
for dump_file in "$dump_dir"/*.dump; do
if [ -f "$dump_file" ]; then
# 提取项目名称(去除文件扩展名)
project_name=$(basename "$dump_file" .dump)

# 创建新的 SVN 仓库
new_repo_path="$new_repos_parent_dir/$project_name"
svnadmin create "$new_repo_path"

# 检查仓库创建是否成功
if [ $? -eq 0 ]; then
echo "成功创建仓库: $new_repo_path"

# 导入转储文件到新仓库
svnadmin load "$new_repo_path" < "$dump_file"

# 检查导入是否成功
if [ $? -eq 0 ]; then
echo "成功导入项目 $project_name$new_repo_path"
else
echo "导入项目 $project_name$new_repo_path 失败"
fi
else
echo "创建仓库 $new_repo_path 失败"
fi
fi
Done

#chmod 777 svn_load_multiple.sh

执行脚本,导入备份

#./svn_load_multiple.sh

正在导入、耐心等待

在这里插入图片描述

赞(0)
未经允许不得转载:网硕互联帮助中心 » SVN打包迁移新服务器并升级
分享到: 更多 (0)

评论 抢沙发

评论前必须登录!