1. SVN

概念:
SVN是一个跨平台的开源版本控制系统,SVN会备份并记录每个文件每一次的修改更新变动。我们可以回滚到旧的版本。

端口:3690

使用方法:
先从中央库check out,然后修改自己的代码后在commit

备份:
需要备份所有代码以及所有更改的版本记录。

缺点:
1、当无法连接到中央版本库的环境下,你无法提交代码,看不到代码的历史版本。
2、每次提交都保留原始副本,因此数据库容量会暴增
3、不适合开源系统开发
4、特别适合几个人的小项目

svn和git区别:
git是分布式的版本管理系统,开发者本地也包含一个完整的git仓库

服务运行方式:
1、独立服务器访问SVN://svn.svnserver.com/doc/
2、apache+svn访问http://svn.svnserver.com/doc/ (CSVN)
3、在svn服务器端用http://svn.svnserver.com/doc/

客户端访问方式
1、http://
2、SVN://

svn数据格式
1、BDB(一种事物安全型表类型)
2、FSFS(不需要数据库的存储系统)

#############################################################################
创建项目目录
mkdir -p /application/svndata #项目文件
mkdir -p /application/svnpasswd #密码、权限文件

安装
yum install subversion -y

运行svn:-d守护进程 -r指定数据存储目录
svnserve -d -r /application/svndata

创建一个新的项目sadoc
svnadmin create /application/svndata/sadoc

修改配置文件
vim /application/svndata/sadoc/conf/svnserve.conf
anon-access = none #禁止匿名访问
auth-access = write #认证读写
password-db = /application/svnpasswd/passwd #密码目录
authz-db = /application/svnpasswd/authz #权限目录

复制文件到自定义的密码和权限目录
cd /application/svndata/sadoc/conf/
cp authz passwd /application//svnpasswd/

只允许root看见密码和权限
cd /application/svnpasswd
chmod 700 *

创建用户
vim /application/svnpasswd/passwd
[users]
lmkmike = 123456
lmkzxh = 123456

注意事项
更改svnserve.conf后必须重启,authz和passwd不需要
vim /application/svnpasswd/authz
更改权限
[groups]
sagroup = lmkmike,lmkzxh
[sadoc:/]
lmkmike = rw
lmkzxh = r
@sagroup = r

客户端svn可以通过SVN://192.168.56.100/sadoc/
然后输入用户名和密码即可(checkout和commit)

linux svn客户端checkout命令
svn co svn://192.168.56.100/sadoc /tmp/sadoc --username lmkmike --password 123456

备份

1本地备份整个最新版本,不包括历史版本的信息
svnadmin hotcopy /application/svndata/sadoc/ /tmp1
2、
查看最新版本号
svnlook youngest /application/svndata/sadoc/
所有版本备份
svnadmin dump /application/svndata/sadoc/ > /tmp/fileall
只备份0-2
svnadmin dump /application/svndata/sadoc/ -r 0:2 --incremental > /tmp/fileall0-2
只备份3-4
svnadmin dump /application/svndata/sadoc/ -r 3:4 --incremental > /tmp/fileall3-4

3、新建空库dump、dump1、dump2做还原实验。
svnadmin create /application/svndata/dump
svnadmin create /application/svndata/dump1
svnadmin create /application/svndata/dump2

原因所有版本
svnadmin load /application/svndata/dump < /tmp/fileall

还原0:2
svnadmin load /application/svndata/dump1 < /tmp/fileall0-2

还原0:4
svnadmin load /application/svndata/dump2 < /tmp/fileall0-2
svnadmin load /application/svndata/dump2 < /tmp/fileall3-4