centos7 svn在repository在的情况下重装恢复

公司一台centos服务器一不小心被搞崩溃了,进不去系统,svn没有备份,泪牛满面~

重装系统后,发现repository文件夹还在,幸亏代码没放根目录。

安装svn

开始恢复,先安装svn

yum -y install subversion

迁移

大部分教程都是教从头创建repository,现在repository文件还在,该怎么操作?

网上搜了一通,给出两种迁移方案,一种是用dump备份,之后再复原

#备份
svnadmin dump repos/XX > 2414.dump
#建新仓库
svnadmin  create  /home/repos4
#load dump文件
svnadmin load /home/repos4 < 2414.dump
#启动SVN服务
svnserve -d -r /home/repos4

第二种方案,使用 svnsync 迁移SVN代码库(适用两台svn机器都可用的情况)

#1、建新仓库,参考方法一
#2、修改新建仓库中hooks 下的 名为 pre-revprop-change 的文件
cp pre-revprop-change.tmpl pre-revprop-change
chmod 777  pre-revprop-change  (给pre-revprop-change文件赋执行权限)
#3、修改  pre-revprop-change 脚本最后一行 为  exit 0
#4、初始化
svnsync  init  file:///home/yst/svn/svn-admin/repos5 svn://xx.xx.xx.xx
#svnsync  init   file:// 新机器仓库目录路径   源服务器的IP(可以通过http协议,还可以通过svn协议)
#5、同步
svnsync sync file:///home/yst/svn/svn-admin/repos5
#6、将原仓库的 uuid 复制过来,覆盖新服务器上的UUID

好像都挺麻烦,我使用的方式是,直接用svnserve启动原repository目录,这里注意端口是否开放

firewall-cmd --zone=public --add-port=3690/tcp --permanent   # 开放3690端口
firewall-cmd --reload
#查看防火墙所有开放的端口
firewall-cmd --zone=public --list-ports
#检查端口被哪个进程占用
netstat -lnpt |grep 5672

开机自启动

svn装好后,设置开机自启动,找到systemd里的svn配置文件 /lib/systemd/system/svnserve.service

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

[Service]
Type=forking
EnvironmentFile=/etc/sysconfig/svnserve
ExecStart=/usr/bin/svnserve --daemon --pid-file=/run/svnserve/svnserve.pid $OPTIONS

[Install]
WantedBy=multi-user.target

找到svn 的 service 配置文件 /etc/sysconfig/svnserve 编辑配置文件

vi /etc/sysconfig/svnserve

将 OPTIONS="-d -r /var/svn" 改为 svn 版本库存放的目录,:wq 保存退出

在提示符下输入

systemctl enable svnserve.service
systemctl start svnserve.service

启动之后,出现permission denied错误

永久关闭SELINUX

需要重启:

vim /etc/selinux/config

修改为:

SELINUX=disabled
原文地址:https://www.cnblogs.com/weiweiting/p/15410461.html