linux svn服务器搭建、客户端操作、备份与恢复

摘要:
本文目录:Linuxsvn服务器部署Linuxsvn客户端命令操作Linuxsvn备份和恢复I.Linux服务器部署1.安装svn〔root@yang~]#yuminstall ysubversion[root@yang~]#Svnserve--版本Svnserve,版本1.6.112.创建SVN版本库[root@yang~]#mkdir/data/svn[root@yang~]#svnadmincreate/data/svn/project[root@yangproject]#Ls/data/svn/project/confdbformathookslocksREADME.txt3.配置svn[root@yangproject]#cd/data/svn/project/conf/[root@yangconf]#Lsauthzpasswdsvnserve。conf文件描述:1)svnserve。conf:在svn服务配置文件下。服务器。conf文件的配置项分为以下五项:anon access:控制未经身份验证的用户访问版本库的权限。
  Subversion(SVN)是一个开源的版本控制系統,管理着随时间改变的数据。这些数据放置在一个中央资料档案库中,这个档案库很像一个普通的文件服务器,它会记住每一次文件的变动,这样就可以把档案恢复到旧的版本,或是浏览文件的变动历史。 




本文目录: 

linux svn服务器部署 

linux svn客户端命令操作 

linux svn备份与恢复 

 

一、linux svn服务器部署 
1、安装svn 

[root@yang~]#yum install -y subversion 

[root@yang~]#svnserve--version 

svnserve,version 1.6.11 (r934486) 

 

2、创建SVN版本库 

[root@yang~]# mkdir /data/svn 

[root@yang~]# svnadmin create /data/svn/project 

[root@yangproject]# ls /data/svn/project/ 

conf  db  format  hooks  locks  README.txt 

 

3、配置SVN 

[root@yangproject]# cd /data/svn/project/conf/ 

[root@yangconf]# ls 

authz  passwd svnserve.conf 

 

文件说明: 

1)svnserve.conf:  svn服务配置文件下。 

2passwd:         用户名密码文件。 

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

[users] 

yangyun= yangyunpasswd 

test = testpasswd 

 

authz文件 

配置用户访问权限 

[root@yangconf]# cat authz |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]# svn import mysite file:///data/svn/project/ -m 'initial import' 

将会拷贝目录mysite到版本库的project下

[root@yangdjango]# svn list file:///data/svn/project 

manage.py 

mysite/ 

static/ 

templates/ 

web02/ 

在导入之后,原来的目录树并没有转化成工作拷贝,为了开始工作,还是需要运行svn checkout导出一个工作拷贝。 

 

二、linux svn客户端命令操作 
1、将文件checkout到本地目录 

svn checkout   path(path是服务器上的目录) 

简写:svn co 

例: 

svn co svn://115.28.24.178/project   --username=yangyun --password=yangyunpasswd 

#指定版本的文件 

svn co svn://115.28.24.178/project   --username=yangyun --password=yangyunpasswd -r 5  

 

2、往本地版本库中添加新的文件 

svn add   file      #此命令得在checkout出来的路径里才能操作 

例如: 

cp /root/123.txt./ 

svn add   123.txt   #把123.txt加入到本地库中 

A         123.txt 

 

3、将改动的文件提交到版本库 

svn commit   -m "LogMessage" [-N] [--no-unlock] PATH(如果选择了保锁,就使用--no-unlock开关) 

简写:svn ci 

例: 

svn commit   123.txt -m 'add 123.txt'  #只提交123.txt 

svn commit  -m 'add 123.txt'       #默认提交当前目录下的所以文件 

svn commit   *.txt -m 'add 123.txt'     #也可以正则匹配文件提交 

 

4、加锁/解锁 

svn lock   -m "LockMessage" [--force] PATH 

例如: 

svn lock   -m "lock test file" test.php 

svn unlock   PATH 

 

5、更新到某个版本 

svn update   -r m path 

例如: 

svn update如果后面没有目录,默认将当前目录以及子目录下的所有文件都更新到最新版本。 

svn update   -r 200 test.php(将版本库中的文件test.php还原到版本200 

svn update   test.php(更新,于版本库同步。如果在提交的时候提示过期的话,是因为冲突,需要先update,修改文件,然后清除svn resolved,最后再提交commit 

简写:svn up 

 

6、删除文件 

svn delete   path -m "delete test fle" 

例如:svn delete svn://192.168.1.1/pro/domain/test.php -m "delete testfile" 

或者直接svn delete test.php 然后再svn ci -m 'delete testfile‘,推荐使用这种 

简写:svn (del, remove, rm) 

 

7、查看日志 

svn log   path 

例如:svn log test.php 显示这个文件的所有修改记录,及其版本号的变化 

 

8、查看文件详细信息 

svn infopath 

例如:svn info test.php   #可知道路径版本,时间,提交者等信息 

 

9、比较差异 

svn diff   path(将修改的文件与基础版本比较) 

例如:svn diff test.php 

svn diff   -r m:n path(对版本m和版本n比较差异) 

例如:svn diff -r 200:201 test.php   #可知道修改了哪些内容 

简写:svn di 

 

10、将两个版本之间的差异合并到当前文件 

svn merge   -r m:n path 

例如:svn merge -r 200:205 test.php(将版本200与205之间的差异合并到当前文件,但是一般都会产生冲突,需要处理一下) 

 

11、SVN 帮助 

svn help 

svn help   ci   

 

12、版本库下的文件和目录列表 

svn list   path  #显示path目录下的所有属于版本库的文件和目录 

简写:svn ls 

 

13、创建纳入版本控制下的新目录 

svn mkdir:创建纳入版本控制下的新目录。 

用法: 

svn mkdirPATH    #效果等同:mkdir test;svn add test; 

 

14、恢复本地修改 

svn revert:恢复原始未改变的工作副本文件 (恢复大部份的本地修改)。 

revert: 

用法: revert PATH... 

注意: 本子命令不会存取网络,并且会解除冲突的状况。但是它不会恢复被删除的目录 

 

三、linux svn备份与恢复 
1、全量备份: 

curr=`svnlook  youngest /data/svn/project/`  #此处是查询工程目录的最新版本 

svnadmin  dump /data/svn/repos/test --revision 0:$cur --incremental  >0-"$curr"svn.bak  

echo  $curr >/tmp/svn_revision 

 

2、增量备份 

old=`cat  /tmp/svn_revision` 

new=`svnlook   youngest /data/svn/project/` 

svnadmin  dump /data/svn/repos/test --revision $old:$new --incremental  >$old"-"$new"svn.bak  

 

3、svn恢复 

恢复顺序从低版本逐个恢复到高版本;即,先恢复最近的一次完整备份,然后恢复紧挨着这个文件的增量备份。 

cd /data/svn/repos/  

svnadmin   create test2  

svnadmin   load test2 < /data/svnback/20110719/0-1112svn.bak   

svnadmin   load test2 < /data/svnback/20110719/1113-1120svn.bak   

免责声明:文章转载自《linux svn服务器搭建、客户端操作、备份与恢复》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇HTML5, CSS3, ES5新的web标准和浏览器支持一览 转PHP苹果推送实现(APNS)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

nginx上传模块—nginx upload module-

一. nginx upload module原理 官方文档: http://www.grid.net.ru/nginx/upload.en.html Nginx upload module通过nginx服务来接受用户上传的文件,自动解析请求体中存储的所有文件上传到upload_store指定的目录下。这些文件信息从原始请求体中分离并根据nginx.conf...

【SQL注入】之SQLMAP工具的使用

(本文仅为平时学习记录,若有错误请大佬指出,如果本文能帮到你那我也是很开心啦) 一、介绍 1.SQL注入工具:明小子、啊D、罗卜头、穿山甲、SQLMAP等等 2.SQLMAP:使用python开发,开源自动化注入利用工具,支持12种数据库 ,在/plugins/dbms中可以看到支持的数据库种类,在所有注入利用工具中它是最好用的!!! 3.支持的注入类型:...

记录一次批量处理文档的过程

要做一项工作,内容是将一个word中的图表复制到多个(接近300个)word文档的末尾,不想一个个CTRL C+CTRL V,就想到了用程序来实现 我第一个想到的使用python来实现,由于技术太渣,尝试了多次,没能写出来,只记得有一个叫做win32com的模块,专门处理文档的。这里先不说了 在查阅资料的过程中,偶然看见在linux中的cat命令似乎能做这...

linux系统常用运维命令

目录/文件处理命令 mkdir dirname 创建文件夹 mkdir -p /tmp/a/b 递归创建目录 rm -rf dirname 删除目录及内部文件 -r:表示递归删除文件及文件夹;-f:表示强制删除,不提示 touch filename 创建文件 mv ins.war ins_new.war 重命名 mv ins.war webapps/ 移动...

Linux 多线程应用中如何编写安全的信号处理函数

http://blog.163.com/he_junwei/blog/static/1979376462014021105242552/ http://www.ibm.com/developerworks/cn/linux/l-cn-signalsec/ Linux 多线程应用中编写安全的信号处理函数 在开发多线程应用时,开发人员一般都会考虑线程安全,会...

MySQL 集群

MySQL Galera介绍主要功能: 同步复制 真正的multi-master,即所有节点可以同时读写数据库 自动的节点成员控制,失效节点自动被清除 新节点加入数据自动复制 真正的并行复制,行级 用户可以直接连接集群,使用感受上与MySQL完全一致 优势: 因为是多主,所以不存在Slave lag(延迟) 不存在丢失交易的情况 同时具有读和写的扩展...