linux svn服务器搭建、客户端操作、备份与恢复
Subversion(SVN)是一个开源的版本控制系統,管理着随时间改变的数据。这些数据放置在一个中央资料档案库中,这个档案库很像一个普通的文件服务器,它会记住每一次文件的变动,这样就可以把档案恢复到旧的版本,或是浏览文件的变动历史。
本文目录:
Linuxsvn服务器部署
linuxsvn客户端命令操作
linuxsvn备份与恢复
一、linuxsvn服务器部署
1、安装svn
[root@yang~]#yuminstall-ysubversion [root@yang~]#svnserve--version svnserve,version1.6.11(r934486)
2、创建SVN版本库
[root@yang~]#mkdir/data/svn [root@yang~]#svnadmincreate/data/svn/project [root@yangproject]#ls/data/svn/project/ confdbformathookslocksREADME.txt
3、配置SVN
[root@yangproject]#cd/data/svn/project/conf/ [root@yangconf]#ls authzpasswdsvnserve.conf
文件说明:
1)svnserve.conf: svn服务配置文件下。
2)passwd: 用户名密码文件。
3)authz: svn权限配置文件。
svnserve.conf文件
该文件配置项分为以下5项:
anon-access: 控制非鉴权用户访问版本库的权限。
auth-access:控制鉴权用户访问版本库的权限。
password-db: 指定用户名口令文件名。
authz-db: 指定权限配置文件名,通过该文件可以实现以路径为基础的访问控制。
realm: 指定版本库的认证域,即在登录时提示的认证域名称。若两个版本库的认证域相同,建议使用相同的用户名口令数据文件
配置如下:
[root@yangconf]#grep-E"anon-access=|auth-access=|password-db=|authz-db=|realm="svnserve.conf anon-access=none auth-access=write password-db=passwd authz-db=authz realm=/data/svn/project
passwd文件
作用是配置用户名和密码
[root@yangconf]#catpasswd [users] yangyun=yangyunpasswd test=testpasswd
authz文件
配置用户访问权限
[root@yangconf]#catauthz|grep-v'#' [aliases] [groups] project_w=yangyun project_r=test [/] project_w=rw project_r=r
4、启动svn服务
[root@yangconf]#svnserve-d-r/data/svn
5、初始化svn数据
[root@yangdjango]#svnimportmysitefile:///data/svn/project/-m'initialimport'
将会拷贝目录mysite到版本库的project下
[root@yangdjango]#svnlistfile:///data/svn/project manage.py mysite/ static/ templates/ web02/
在导入之后,原来的目录树并没有转化成工作拷贝,为了开始工作,还是需要运行svncheckout导出一个工作拷贝。
二、linuxsvn客户端命令操作
1、将文件checkout到本地目录
svncheckout path(path是服务器上的目录)
简写:svnco
例:
svncosvn://115.28.24.178/project--username=yangyun--password=yangyunpasswd #指定版本的文件 svncosvn://115.28.24.178/project--username=yangyun--password=yangyunpasswd-r5
2、往本地版本库中添加新的文件
svnadd file #此命令得在checkout出来的路径里才能操作
例如:
cp/root/123.txt./ svnadd123.txt#把123.txt加入到本地库中 A123.txt
3、将改动的文件提交到版本库
svncommit-m"LogMessage"[-N][--no-unlock]PATH(如果选择了保锁,就使用--no-unlock开关)
简写:svnci
例:
svncommit123.txt-m'add123.txt'#只提交123.txt svncommit-m'add123.txt'#默认提交当前目录下的所以文件 svncommit*.txt-m'add123.txt'#也可以正则匹配文件提交
4、加锁/解锁
svnlock-m"LockMessage"[--force]PATH
例如:
svnlock-m"locktestfile"test.PHP svnunlockPATH
5、更新到某个版本
svnupdate-rmpath
例如:
svnupdate如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。
svnupdate -r200test.php(将版本库中的文件test.php还原到版本200
svnupdate test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svnresolved,最后再提交commit
简写:svnup
6、删除文件
svndeletepath-m"deletetestfle"
例如:svndeletesvn://192.168.1.1/pro/domain/test.php-m"deletetestfile"
或者直接svndeletetest.php然后再svnci-m'deletetestfile‘,推荐使用这种
简写:svn(del,remove,rm)
7、查看日志
svnlog path
例如:svnlogtest.php显示这个文件的所有修改记录,及其版本号的变化
8、查看文件详细信息
svninfopath
例如:svninfotest.php #可知道路径版本,时间,提交者等信息
9、比较差异
svndiff path(将修改的文件与基础版本比较)
例如:svndifftest.php
svndiff -rm:npath(对版本m和版本n比较差异)
例如:svndiff-r200:201test.php #可知道修改了哪些内容
简写:svndi
10、将两个版本之间的差异合并到当前文件
svnmerge-rm:npath
例如:svnmerge-r200:205test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下)
11、SVN帮助
svnhelp
svnhelp ci
12、版本库下的文件和目录列表
svnlist path #显示path目录下的所有属于版本库的文件和目录
简写:svnls
13、创建纳入版本控制下的新目录
svnmkdir:创建纳入版本控制下的新目录。
用法:
svnmkdirPATH #效果等同:mkdirtest;svnaddtest;
14、恢复本地修改
svnrevert:恢复原始未改变的工作副本文件(恢复大部份的本地修改)。
revert:
用法:revertPATH...
注意:本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录
三、linuxsvn备份与恢复
1、全量备份:
curr=`svnlookyoungest/data/svn/project/`#此处是查询工程目录的最新版本 svnadmindump/data/svn/repos/test--revision0:$cur--incremental>0-"$curr"svn.bak echo$curr>/tmp/svn_revision
2、增量备份
old=`cat/tmp/svn_revision` new=`svnlookyoungest/data/svn/project/` svnadmindump/data/svn/repos/test--revision$old:$new--incremental>$old"-"$new"svn.bak
3、svn恢复
恢复顺序从低版本逐个恢复到高版本;即,先恢复最近的一次完整备份,然后恢复紧挨着这个文件的增量备份。
cd/data/svn/repos/ svnadmincreatetest2 svnadminloadtest2</data/svnback/20110719/0-1112svn.bak svnadminloadtest2</data/svnback/20110719/1113-1120svn.bak