当前位置: 首页 > 编程笔记 >

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

何修能
2023-03-14
本文向大家介绍linux svn服务器搭建、客户端操作、备份与恢复,包括了linux svn服务器搭建、客户端操作、备份与恢复的使用技巧和注意事项,需要的朋友参考一下

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服务配置文件下。

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]# 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 
 类似资料:
  • 前面的章节介绍了所有 Redis 的重要功能组件: 数据结构、数据类型、事务、Lua 环境、事件处理、数据库、持久化, 等等, 但是我们还没有对 Redis 服务器本身做任何介绍。 不过, 服务器本身并没有多少需要介绍的新东西, 因为服务器除了维持服务器状态之外, 最重要的就是将前面介绍过的各个功能模块组合起来, 而这些功能模块在前面的章节里已经介绍过了, 所以本章将焦点放在服务器的初始化过程,

  • 问题内容: 这是一个设计问题。我有需要进入HTML表的数据,稍后将由用户操纵。基本上,用户将能够选择表格行中的项目。 我有两个选择-在两种情况下,我都使用AJAX来获取数据: 在服务器端使用PHP创建HTML代码,并将其作为HTML发送到客户端。然后,用户使用Javascript(本质上是jQuery)来操纵表格。 使用JSON将原始数据发送到客户端,然后使用jQuery创建HTML,然后由用户对

  • 本文向大家介绍PostgreSQL之pgdump备份恢复操作,包括了PostgreSQL之pgdump备份恢复操作的使用技巧和注意事项,需要的朋友参考一下 逻辑备份在恢复时,介于逻辑备份与故障时间点之间的数据难以恢复,故一般不采取逻辑备份方式进行数据库备份,但逻辑适用于跨平台跨版本的数据迁移; 逻辑备份恢复主要以下三种: pg_dump pg_dumpall copy 本小节主要讲解pg_dump

  • 查看MySQL的备份数据 (重要) egrep -v "#|\/|^$|--" /mnt/database_bak.sql MySQL查看bin-log日志的方法 mysqlbinlog mysql-bin.000001 拆分总的binlog为指定库的增删改操作(恢复指定库的binlog时使用) mysqlbinlog -d test mysql-bin.000001 基于位置点的增量恢复 指定开

  • 我想在一些计算机之间建立点对点连接,这样用户就可以在没有外部服务器的情况下聊天和交换文件。我最初的想法如下: 我在服务器上制作了一个中央服务器插座,所有应用程序都可以连接到该插座。此ServerSocket跟踪已连接的套接字(客户端),并将新连接的客户端的IP和端口提供给所有其他客户端。每个客户端都会创建一个新的ServerSocket,所有客户端都可以连接到它。 换句话说:每个客户端都有一个Se

  • BGREWRITEAOF 在后台执行一个 AOF文件重写操作 动态关闭AOF: redis-cli config set appendonly no 动态打开AOF: redis-cli config set appendonly yes 永久关闭AOF: sed -e '/appendonly/ s/^#*/#/' -i /etc/redis/redis.conf (默认是关闭的) 永久打开A