公司内部需要搭建一个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