阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Linux下SVN服务器的安装与配置-备份-恢复-计划任务

430次阅读
没有评论

共计 8202 个字符,预计需要花费 21 分钟才能阅读完成。

简介:
SVN 是 Subversion 的简称,是一个开放源代码的版本控制系统,相较于 RCS、CVS,它采用了分支管理系统,它的设计目标就是取代 CVS。互联网上很多版本控制服务已从 CVS 迁移到 Subversion。
运行方式
svn 服务器有 2 种运行方式:独立服务器和借助 apache 运行。两种方式各有利弊,用户可以自行选择。

一、安装 svn

# yum install subversion-1.6.11-7.el5_6.4 mysql-server httpd mod_dav_svn mod_perl sendmail wget gcc-c++ make unzip perl* ntsysv vim-enhanced

subversion-1.6.11-7.el5_6.4 (SVN 服务器, 版本号)
mysql-server (用于 codestriker)
httpd mod_dav_svn mod_perl (用于支持 WEB 方式管理 SVN 服务器)
sendmail (用于配置用户提交代码后发邮件提醒)
wget gcc-c++ make unzip perl* (必备软件包)
ntsysv vim-enhanced (可选)

二、基本配置

1,新建一个目录用于存储 SVN 所有文件

# mkdir /data/svn
# cd /data/

2,新建一个版本仓库

# svnadmin create /data/svn/project

3,初始化版本仓库中的目录

# mkdir project project/server project/client project/test   // 建立临时目录,目录为开发人员上传的数据目录 
# svn import project file:///data/svn/project -m "初始化"
# rm -rf project    // 删除刚刚创建的 project 文件,因为已经初始化到了 svn 版本库 

4,添加用户

# vim /data/svn/project/conf/passwd
[users]
# harry = harryssecret
# sally = sallyssecret
admin = 123456         // 账号是 admin 密码是 123456(SVN 账户的密码是明文,不支持 http 密文密码,下面会有解释)

5,修改用户访问策略

# vim /data/svn/project/conf/authz    // 记录用户的访问策略,以下是参考:
[groups]
[/]
admin = rw
* =    //* = 表示,除了上面设置了权限的用户组之外,其他任何人都被禁止访问本目录。这个很重要,一定要加上!

6,修改 svnserve.conf 文件, 指定密码与策略文件。

# vim svnserve.conf
[general]
anon-access = none
auth-access = write
password-db = /data/svn/project/conf/passwd
authz-db = /data/svn/project/conf/authz

7,启动服务器

# svnserve -d -r /data/svn

注意: 如果修改了 svn 配置,需要重启 svn 服务,步骤如下:

# ps -aux|grep svnserve
# kill -9 ID 号
# svnserve -d -r /data/svn

8,测试服务器 (目前还不能通过 web 测试)

# svn co svn://192.168.5.10/project

 
Authentication realm: <svn://192.168.5.10:3690> d72f34c5-d386-4d19-bc8b-9e5192737eee
Password for 'root':         // 直接回车 
Authentication realm: <svn://192.168.5.10:3690> d72f34c5-d386-4d19-bc8b-9e5192737eee
Username: admin        // 用户名 
Password for 'admin':     // 刚刚 passwd 里设置的密码 

-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:

   <svn://192.168.5.10:3690> d72f34c5-d386-4d19-bc8b-9e5192737eee

can only be stored to disk unencrypted!  You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible.  See the documentation for details.

You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
'/root/.subversion/servers'.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes
A    project/test
A    project/server
A    project/client
Checked out revision 1.

三、配置 SVN 服务器的 HTTP 支持可以启动一下 httpd 测试一下

1, 设置 apache 访问 svn 的权限, 不然 apache 是没有权限读取 svn 下的数据的

# chown -R apache:apache /data/svn/

那我们来转换 SVN 服务器的密码,由于 SVN 服务器的密码是明文的,HTTP 服务器不与支持,所以需要转换成 HTTP 支持的格式。

2,创建支持 apache 的 SVN 账号密码

# touch passwd
# htpasswd -c /data/passwd admin    // 创建用户 admin,并为其设置密码 
# cat passwd >> /data/svn/project/conf/passwd
# vim /data/svn/project/conf/passwd // 注释 admin 的明文账户
#admin = admin

3,在 apache 的配置文件中添加下面这些内容,以便支持 SVN 服务

# vim /etc/httpd/conf/httpd.conf
 
<Location /project>
DAV svn
SVNPath /data/svn/project/
AuthType Basic
AuthName "svn for project"
AuthUserFile /data/svn/project/conf/passwd
AuthzSVNAccessFile /data/svn/project/conf/authz
Satisfy all
Require valid-user
</Location>
 重启 svn、httpd 服务 
# ps -ef |grep svnserve
# kill -9 3994
# svnserve -d -r /data/svn
# service httpd restart

4,客户端测试

这样用 Windows 的 svn 客户端或者浏览器测试

浏览器测试:http://192.168.5.10/project

Windows 客户端测试:

安装 TortoiseSVN—–> 在桌面右击鼠标 —–>TortoiseSVN—–> 版本库浏览器 (R)—–>http://192.168.5.10/project—–> 账号密码 —–> 确定

注意: 输入账号或密码就可以了 (密码为 http 支持的格式非明文)

===========================================================================================================================================================================================================================================

===========================================================================================================================================================================================================================================

四、添加删除版本库

先把 httpd 停掉,再给 passwd 添加一个明文用户,设置 authz 的权限

# service httpd stop
Stopping httpd:                                            [OK]
# vim /data/svn/project/conf/passwd 
:
:
[users]
# harry = harryssecret
# sally = sallyssecret
#admin = 123456
test = test
admin:uyvcrbGbdBPuk
:
:
# vim /data/svn/project/conf/authz 
:
:
[groups]
[/]
admin = rw
test = rw
* =
:
:
# ps -ef |grep svn
root      4032     1  0 15:14 ?        00:00:00 svnserve -d -r /data/svn
root     25723  3556  0 16:35 pts/1    00:00:00 grep svn
# kill -9 4032
# svnserve -d -r /data/svn
# svn ls svn://192.168.5.10/project
Authentication realm: <svn://192.168.5.10:3690> d72f34c5-d386-4d19-bc8b-9e5192737eee
Password for 'admin': 
Authentication realm: <svn://192.168.5.10:3690> d72f34c5-d386-4d19-bc8b-9e5192737eee
Username: test
Password for 'test': 

-----------------------------------------------------------------------
ATTENTION!  Your password for authentication realm:

   <svn://192.168.5.10:3690> d72f34c5-d386-4d19-bc8b-9e5192737eee

can only be stored to disk unencrypted!  You are advised to configure
your system so that Subversion can store passwords encrypted, if
possible.  See the documentation for details.

You can avoid future appearances of this warning by setting the value
of the 'store-plaintext-passwords' option to either 'yes' or 'no' in
'/root/.subversion/servers'.
-----------------------------------------------------------------------
Store password unencrypted (yes/no)? yes
client/
server/
test/
# svn delete svn://192.168.5.10/progect/client -m "delete"
svn: No repository found in 'svn://192.168.5.10/progect/client'
# svn delete svn://192.168.5.10/project/client -m "delete"

Committed revision 2.
# svn delete svn://192.168.5.10/project/server -m "delete"

Committed revision 3.
# svn delete svn://192.168.5.10/project/test -m "delete"

Committed revision 4.
# svn mkdir -m "UP" svn://192.168.5.10/project/union

Committed revision 5.
# svn mkdir -m "UP" svn://192.168.5.10/project/wangyi

Committed revision 6.
# vim /data/svn/project/conf/passwd 
[users]
# harry = harryssecret
# sally = sallyssecret
#admin = 123456
test = test
admin:uyvcrbGbdBPuk

# ps -ef |grep svn
root     25725     1  0 16:35 ?        00:00:00 svnserve -d -r /data/svn
root     25759  3556  0 16:40 pts/1    00:00:00 grep svn
# kill -9 25725
# svnserve -d -r /data/svn
# service httpd start
Starting httpd:                                            [OK]
Linux 下 SVN 服务器的安装与配置 - 备份 - 恢复 - 计划任务

上传文件到 svn 版本库  file 目录下的文件是其它服务器的备份文件  

# export LANG="zh_CN.GB2312"    // 文件名有中文的时候需要设置变量 
# svn import /data/file/ file:///data/svn/project/file --message "init"
# svn import /data/file/ svn:///data/svn/project/file --message "init"    // 两条命令是一样的 

五、SVN 的备份和还原(两种备份方式)

1、hotcopy 备份方式:# svnadmin hotcopy /data/svn/project /data/bakup/`date +/%y%m%d`/ --clean-logs    // 用 svnadmin 整体备份 /data/svn/project 到 /data/bakup/ 目录里并且以时间命名 
2、dump 备份方式:# svnadmin dump /data/svn/project > /data/beifen/`date +/%Y%m%d`.bak    // 推荐此方法备份,下面模拟用的就是 dump 的方式 

六、模拟服务器奔溃(在有备份文件的情况下,恢复到新服务器)

# rm -rf /data/svn/*
# ps -ef |grep svn 
# kill -9 26221
# svnadmin create /data/svn/ceshi
# export LANG=en_US
# svnadmin load /data/svn/ceshi < /data/20150906 
# cat /data/passwd >> /data/svn/ceshi/conf/passwd
[users]
admin:uyvcrbGbdBPuk
# vim /data/svn/ceshi/conf/authz 
 
[groups]
[/]
admin = rw
* =
# vim /data/svn/ceshi/conf/svnserve.conf 
[general]
anon-access = none
auth-access = write
password-db = /data/svn/ceshi/conf/passwd
authz-db = /data/svn/ceshi/conf/authz
# vim /etc/httpd/conf/httpd.conf
 
 
<Location /ceshi>
DAV svn
SVNPath /data/svn/ceshi/
AuthType Basic
AuthName "svn for ceshi"
AuthUserFile /data/svn/ceshi/conf/passwd
AuthzSVNAccessFile /data/svn/ceshi/conf/authz
Satisfy all
Require valid-user
</Location>
 
# service httpd restart
# svnserve -d -r /data/svn
测试是否成功恢复
http://192.168.5.10/ceshi

七、自动全量备份脚本

 # vim svn.pl
 
#!/usr/bin/perl -w
my $svn_repos="/data/svn/project";
my $backup_dir="/data/backup/svn/";
my $next_backup_file = "svn".`date +%Y%m%d`;

$youngest=`svnlook youngest $svn_repos`;
chomp $youngest;

print "Backing up to revision $youngest";
my $svnadmin_cmd="svnadmin dump --revision $youngest $svn_repos >$backup_dir/$next_backup_file";
`$svnadmin_cmd`;
open(LOG,">$backup_dir/last_backed_up"); # 记录备份的版本号 
print LOG $youngest;
close LOG;
# 如果想节约空间,则再执行下面的压缩脚本 
#print "Compressing dump file...n";
#print `gzip -9 $backup_dir/$next_backup_file`;

删除三天前的备份文件

# vim svn-Timing-delete.sh
find /data/backup/svn/  -type f -mtime +3 -exec rm '{}' \; 

添加到计划任务

# crontab -e
30 22 * * * perl /data/svn/svn.pl
00 23 * * * bash /data/svn/svn-Timing-delete.sh

Ubuntu 14.04 下搭建 SVN 服务器 SVN://  http://www.linuxidc.com/Linux/2015-01/111956.htm

CentOS 6.2 SVN 搭建 (YUM 安装) http://www.linuxidc.com/Linux/2013-10/91903.htm

CentOS 6.5 部署 Apache+SVN  http://www.linuxidc.com/Linux/2013-12/94315.htm

Apache+SVN 搭建 SVN 服务器 http://www.linuxidc.com/Linux/2013-03/81379.htm

Windows 下 SVN 服务器搭建和使用 + 客户端重新设置密码 http://www.linuxidc.com/Linux/2013-05/85189p5.htm

Ubuntu Server 12.04 安装 SVN 并迁移 Virtual SVN 数据 http://www.linuxidc.com/Linux/2013-05/84695.htm

Ubuntu Server 搭建 SVN 服务以及迁移方法 http://www.linuxidc.com/Linux/2013-05/84693.htm

Subversion (SVN) 的详细介绍 :请点这里
Subversion (SVN) 的下载地址 :请点这里

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2015-10/124124.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计8202字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7995249
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级

让微信公众号成为 AI 智能体:从内容沉淀到智能问答的一次升级 大家好,我是星哥,之前写了一篇文章 自己手撸一...
每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站-手机博物馆-CHAZ 3D Experience

每天一个好玩的网站 - 手机博物馆 -CHAZ 3D Experience 一句话介绍:一个用 3D 方式重温...
飞牛NAS玩转Frpc并且配置,随时随地直连你的私有云

飞牛NAS玩转Frpc并且配置,随时随地直连你的私有云

飞牛 NAS 玩转 Frpc 并且配置,随时随地直连你的私有云 大家好,我是星哥,最近在玩飞牛 NAS。 在数...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装Black群晖DSM7.2系统安装教程(在Vmware虚拟机中、实体机均可)!

安装 Black 群晖 DSM7.2 系统安装教程(在 Vmware 虚拟机中、实体机均可)! 前言 大家好,...
Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集

Prometheus:监控系统的部署与指标收集 在云原生体系中,Prometheus 已成为最主流的监控与报警...
手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板

手把手教你,购买云服务器并且安装宝塔面板 前言 大家好,我是星哥。星哥发现很多新手刚接触服务器时,都会被“选购...
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...