公司内部需要搭建一个SVN服务器给开发人员使用,把搭建过程整理了下。


服务端

# yum install subversion

 

客户端
TortoiseSVN,官网下载:http://tortoisesvn.net/downloads.html

 

# svnadmin create /svn/project 

 

# vi /svn/project/conf/svnserve.conf

[general]

anon-access = none

auth-access = write

password-db = /svn/project/conf/passwd

authz-db = /svn/project/conf/authz

realm = My Test Repository         #这是个提示信息

 

添加用户

# vim /svn/jichuang/conf/passwd

[users]

jichuang = jichuang
yangmv = 123456

保存

 

配置新用户的授权文件

# vim /svn/jichuang/conf/authz

[groups]

admin = yangmv

user = jichuang

 

[/]

@admin = rw

@user = r

* =

保存

 

 

启动svn服务
# svnserve -d -r /svn/jichuang/

加入自启动  /etc/rc.d/rc.local 

# ps -ef|grep svn

 

防火墙

# iptables -A INPUT -s 10.10.50.0/24 -d 10.10.50.103 -p tcp--dport 3690 -j ACCEPT

# iptables -A OUTPUT -s 10.10.50.103 -d 10.10.50.0/24 -p tcp--sport 3690 -j ACCEPT

 

 

 

 

 

 

 

备份svn存储库

#压缩备份
svnadmin dump /svn/jichuang | gzip > /svn/backup/jichuang-backup.gz
#不压缩备份
svnadmin dump /svn/jichuang > /svn/backup/jichuang-backup.svn

恢复svn存储库

#建立新的svn存储库
svnadmin create /svn/jichuang
#导入存储库数据
svnadmin load /svn/jichuang < /svn/backup/repository-backup.svn

 

 

 

 

备份脚本

#vim/etc/crontab

00 011 * *     /root/svn_scripts/full.sh

00 02* * *     /root/svn_scripts/add.sh

 

完全备份

#!/bin/sh

DATE=$(date +%Y%m%d:%H:%M:%S)       #定义时间变量,用于文件名后缀

SVN_DIR=/svn/jichuang               #定义SVN库目录变量

SVN_BAK_DIR=/svn/backup      #定义备份文件存放目录变量

echo '0' > /tmp/jichuang_svn_id          #初始化版本号,全库备份一定是从0版本号>

开始

NUM1=$(cat /tmp/jichuang_svn_id)         #取初始化版本号

NUM2=$(svnlook youngest $SVN_DIR)   #取当前最新的版本号

#开始备份

svnadmin dump $SVN_DIR -r $NUM1:$NUM2  --incremental>  $SVN_BAK_DIR/jichuang_f

ull_bak_$DATE

#判断备份是否成功,若成功,则记录当前最新的版本号到临时文件中,用于下次增量备份>

使用

if [ $? -eq 0 ];

    then

    echo $NUM2 >/tmp/jichuang_svn_id

    else

    echo "backupfail...."

fi

 

 

 

增量备份

#!/bin/sh

DATE=$(date +%Y%m%d:%H:%M:%S)       #定义时间变量,用于文件名后缀

SVN_DIR=/svn/jichuang               #定义SVN库目录变量

SVN_BAK_DIR=/svn/backup/            #定义备份文件存放目录变量

NUM1=$(cat /tmp/jichuang_svn_id)         #取初始化版本号

NUM2=$(svnlook youngest $SVN_DIR)   #取当前最新的版本号

#开始备份

svnadmin dump $SVN_DIR -r $NUM1:$NUM2  --incremental>  $SVN_BAK_DIR/jichuang_a

dd_bak_$DATE

#判断备份是否成功,若成功,则记录当前最新的版本号到临时文件中,用于下次增量备份>

使用

if [ $? -eq 0 ];

    then

    echo $NUM2 >/tmp/jichuang_svn_id

    else

    echo "backupfail...."

fi