您的位置:首页 > 运维架构 > Linux

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

2015-10-14 15:56 781 查看
简介:
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


# 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  ]


详细步骤,请打开查看
上传文件到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[/code] 
七、自动全量备份脚本

# 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: