迁移原因: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

正在导入、耐心等待

在这里插入图片描述

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐