公司里有台机器作为SVN的服务器,现在我想另找一台电脑,然后将SVN中的数据备份到这台电脑上,该怎么办?

公司里有台机器作为SVN的服务器,现在我想另找一台电脑,然后将SVN中的数据备份到这台电脑上,该怎么办?,第1张

方法很多,可以将svn的代码库直接打包拷贝到新的服务器;也可以通过svnadmin dump将代码dump出来,然后通过svnadmin load进行恢复;当然通过svnsync也可以,但操作提交麻烦。建议采用前面两个

svn全称subversion,即版本控制系统,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,简而言之就是用于多个人共同开发同一个项目,实现共享资源,实现最终集中式的管理。

作为一个开源的版本控制系统,Subversion管理着随时间改变的数据。这些数据放置在一个中央资料档案库(Repository)中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样就可以把档案恢复到旧的版本,或是浏览文件的变动历史。Subversion是一个通用的系统,可用来管理任何类型的文件,其中包括程序源码。

SVN优势

1、存储

SVN服务器既具有CVS所具有数据储存的优点,像是信息资源存储后会形成资源树结构,便于存储的同时,数据一般不会丢失,同时又拥有自己的特色。SVN是通过关系数据库及二进制的存储方式,同时解决了既往不能同时读写同一文件等问题,同时增添了自己特有的“零或一”原则。

2、速度

与人们初始的CVS相比,SVN在速度运行方面有很大提升。因为SVN服务器只支持少量的信息、资源传输,与其他系统相比,更支持的是离线模式,因此避免了网络拥挤现象的出现。

3、安全性

SVN是一种技术性更加安全的产品,实现了系统和控制两方面的结合。一方面可以将系统整体的安全功能有效地分布在分支系统中,进而保证分支系统能正常运行,从而使各分支系统能够互补,最终在系统整体性的安全性得以保障,通过均衡原则实现最终追求安全的目的。

1、检出

svncohttp://路径(目录或文件的全路径) [本地目录全路径]

--username 用户名 --password 密码svncosvn://路径(目录或文件的全路径) [本地目录全路径]--username 用户名 --password 密码

svncheckouthttp://路径(目录或文件的全路径) [本地目录全路径] --username 用户名

svncheckoutsvn://路径(目录或文件的全路径) [本地目录全路径]--username 用户名

注:如果不带--password 参数传输密码的话,会提示输入密码,建议不要用明文的--password 选项。

其中 username 与 password前是两个短线,不是一个。

不指定本地目录全路径,则检出到当前目录下。

例子:

svn co svn://localhost/测试工具/home/testtools--usernamewzhnsc

svn co http://localhost/test/testapp--usernamewzhnsc

svn checkout svn://localhost/测试工具/home/testtools--usernamewzhnsc

svncheckouthttp://localhost/test/testapp--usernamewzhnsc

2 、 导出(导出一个干净的不带svn文件夹的目录树 )

svnexport[-r 版本号]http://路径(目录或文件的全路径) [本地目录全路径] --username 用户名

svnexport[-r 版本号]svn://路径(目录或文件的全路径) [本地目录全路径] --username 用户名

svnexport本地检出的(即带有svn文件夹的)目录全路径要导出的本地目录全路径

注:第一种从版本库导出干净工作目录树的形式是指定URL,

如果指定了修订版本号,会导出相应的版本,

如果没有指定修订版本,则会导出最新的,导出到指定位置。

如果省略本地目录全路径,URL的最后一部分会作为本地目录的名字。

第二种形式是指定 本地检出的目录全路径 到 要导出的本地目录全路径,所有的本地修改将会保留,

但是不在版本控制下(即没提交的新文件,因为svn文件夹里没有与之相关的信息记录)的文件不会拷贝。

例子:

svn export svn://localhost/测试工具/home/testtools--usernamewzhnsc

svn export svn://localhost/test/testapp--usernamewzhnsc

svn export /home/testapp/home/testtools

3、添加新文件

svn add 文件名

注:告诉SVN服务器要添加文件了,还要用svn commint -m真实的上传上去!

例子:

svn addtestphp<-添加testphp

svn commit -m“添加我的测试用testphp“ testphp

svn addphp<-添加当前目录下所有的php文件

svn commit -m“添加我的测试用全部php文件“ php

4、提交

svn commit -m “提交备注信息文本“ [-N] [--no-unlock] 文件名

svn ci -m “提交备注信息文本“ [-N] [--no-unlock] 文件名

必须带上-m参数,参数可以为空,但是必须写上-m

例子:

svn commit -m“提交当前目录下的全部在版本控制下的文件“ <-注意这个表示全部文件

svn commit -m“提交我的测试用testphp“ testphp

svn commit -m“提交我的测试用testphp“-N --no-unlocktestphp<-保持锁就用–no-unlock开关

svn ci -m“提交当前目录下的全部在版本控制下的文件“ <-注意这个表示全部文件

svn ci -m“提交我的测试用testphp“ testphp

svn ci -m“提交我的测试用testphp“-N --no-unlocktestphp<-保持锁就用–no-unlock开关

5、更新文件

svn update

svn update -r 修正版本 文件名

svn update 文件名

例子:

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

svn update -r200 testcpp<-将版本库中的文件 testcpp 还原到修正版本(revision)200

svn updatetestphp<-更新与版本库同步。

提交的时候提示过期冲突,需要先 update 修改文件,

然后清除svn resolved,最后再提交commit。

6、删除文件

svn delete svn://路径(目录或文件的全路径) -m “删除备注信息文本”

推荐如下操作:

svn delete文件名

svn ci -m“删除备注信息文本”

例子:

svn delete svn://localhost/testapp/testphp-m“删除测试文件testphp”

推荐如下操作:

svn deletetestphp

svn ci -m“删除测试文件testphp”

7、加锁/解锁

svn lock -m “加锁备注信息文本“ [--force] 文件名

svn unlock 文件名

例子:

svn lock -m“锁信测试用testphp文件“ testphp

svn unlocktestphp

8、比较差异

svn diff 文件名

svn diff -r 修正版本号m:修正版本号n 文件名

例子:

svn difftestphp<-将修改的文件与基础版本比较

svn diff -r200:201 testphp<-对 修正版本号200 和 修正版本号201 比较差异

9、查看文件或者目录状态

svn st目录路径/名

svn status 目录路径/名<-目录下的文件和子目录的状态,正常状态不显示

:不在svn的控制中;M:内容被修改;C:发生冲突;

A:预定加入到版本库;K:被锁定

svn-v 目录路径/名

svn status -v 目录路径/名<-显示文件和子目录状态

第一列保持相同,第二列显示工作版本号,

第三和第四列显示最后一次修改的版本号和修改人

注:svn status、svn diff和 svn revert这三条命令在没有网络的情况下也可以执行的,

原因是svn在本地的svn中保留了本地版本的原始拷贝。

10、查看日志

svn log 文件名

例子:

svn logtestphp<-显示这个文件的所有修改记录,及其版本号的变化

11、查看文件详细信息

svn info 文件名

例子:

svn infotestphp

12、SVN 帮助

svn help<-全部功能选项

svn help ci<- 具体功能的说明

13、查看版本库下的文件和目录列表

svn list svn://路径(目录或文件的全路径)

svn ls svn://路径(目录或文件的全路径)

例子:

svn list svn://localhost/test

svn ls svn://localhost/test<-显示svn://localhost/test目录下的所有属于版本库的文件和目录

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

svn mkdir 目录名

svn mkdir -m "新增目录备注文本" http://目录全路径

例子:

svn mkdirnewdir

svn mkdir -m"Making a new dir"svn://localhost/test/newdir

注:添加完子目录后,一定要回到根目录更新一下,不然在该目录下提交文件会提示“提交失败”

svn update

注:如果手工在checkout出来的目录里创建了一个新文件夹newsubdir,

再用svn mkdirnewsubdir命令后,SVN会提示:

svn: 尝试用 “svn add”或 “svn add --non-recursive”代替?

svn: 无法创建目录“hello”: 文件已经存在

此时,用如下命令解决:

svn add --non-recursivenewsubdir

在进入这个newsubdir文件夹,用ls -a查看它下面的全部目录与文件,会发现多了:svn目录

再用 svn mkdir -m "添hello功能模块文件" svn://localhost/test/newdir/newsubdir 命令,

SVN提示:

svn: File already exists: filesystem '/data/svnroot/test/db', transaction '4541-1',

path '/newdir/newsubdir '

15、恢复本地修改

svn revert [--recursive] 文件名

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

例子:

svn revertfooc<-丢弃对一个文件的修改

svn revert --recursive<-恢复一整个目录的文件, 为当前目录

16、把工作拷贝更新到别的URL

svn switch http://目录全路径 本地目录全路径

例子:

svn switch http://localhost/test/456 <- (原为123的分支)当前所在目录分支到localhost/test/456

17、解决冲突

svn resolved [本地目录全路径]

例子:

$ svn update

C fooc

Updated to revision 31

如果你在更新时得到冲突,你的工作拷贝会产生三个新的文件:

$ ls

fooc

foocmine

foocr30

foocr31

当你解决了fooc的冲突,并且准备提交,运行svn resolved让你的工作拷贝知道你已经完成了所有事情。

你可以仅仅删除冲突的文件并且提交,但是svn resolved除了删除冲突文件,还修正了一些记录在工作拷贝管理区域的记录数据,所以我们推荐你使用这个命令。

18、不checkout而查看输出特定文件或URL的内容

svn cat http://文件全路径

例子:

svn cat http://localhost/test/readmetxt

19、新建一个分支copy

svn copybranchA branchB-m "make B branch" // 从branchA拷贝出一个新分支branchB

20、合并内容到分支merge

svn mergebranchA branchB// 把对branchA的修改合并到分支branchB

对于多数应用来说,MySQL都是作为最关键的数据存储中心的,所以,如何让MySQL提供HA服务,是我们不得不面对的一个问题。当master当机的时候,我们如何保证数据尽可能的不丢失,如何保证快速的获知master当机并进行相应的故障转移处理,都是需要我们好好思考的。这里,笔者将结合这段时间做的MySQL proxy以及toolsets相关工作,说说我们现阶段以及后续会在项目中采用的MySQL HA方案。

Replication

要保证MySQL数据不丢失,replication是一个很好的解决方案,而MySQL也提供了一套强大的replication机制。只是我们需要知道,为了性能考量,replication是采用的asynchronous模式,也就是写入的数据并不会同步更新到slave上面,如果这时候master当机,我们仍然可能会面临数据丢失的风险。

为了解决这个问题,我们可以使用semi-synchronous replication,semi-synchronous replication的原理很简单,当master处理完一个事务,它会等待至少一个支持semi-synchronous的slave确认收到了该事件并将其写入relay-log之后,才会返回。这样即使master当机,最少也有一个slave获取到了完整的数据。

但是,semi-synchronous并不是100%的保证数据不会丢失,如果master在完成事务并将其发送给slave的时候崩溃,仍然可能造成数据丢失。只是相比于传统的异步复制,semi-synchronous replication能极大地提升数据安全。更为重要的是,它并不慢,MHA的作者都说他们在facebook的生产环境中使用了semi-synchronous(这里),所以我觉得真心没必要担心它的性能问题,除非你的业务量级已经完全超越了facebook或者google。在这篇文章里面已经提到,MySQL 57之后已经使用了Loss-Less Semi-Synchronous replication,所以丢数据的概率已经很小了。

如果真的想完全保证数据不会丢失,现阶段一个比较好的办法就是使用gelera,一个MySQL集群解决方案,它通过同时写三份的策略来保证数据不会丢失。笔者没有任何使用gelera的经验,只是知道业界已经有公司将其用于生产环境中,性能应该也不是问题。但gelera对MySQL代码侵入性较强,可能对某些有代码洁癖的同学来说不合适了:-)

我们还可以使用drbd来实现MySQL数据复制,MySQL官方文档有一篇文档有详细介绍,但笔者并未采用这套方案,MHA的作者写了一些采用drdb的问题,在这里,仅供参考。

在后续的项目中,笔者会优先使用semi-synchronous replication的解决方案,如果数据真的非常重要,则会考虑使用gelera。

Monitor

前面我们说了使用replication机制来保证master当机之后尽可能的数据不丢失,但是我们不能等到master当了几分钟才知道出现问题了。所以一套好的监控工具是必不可少的。

当master当掉之后,monitor能快速的检测到并做后续处理,譬如邮件通知管理员,或者通知守护程序快速进行failover。

通常,对于一个服务的监控,我们采用keepalived或者heartbeat的方式,这样当master当机之后,我们能很方便的切换到备机上面。但他们仍然不能很即时的检测到服务不可用。笔者的公司现阶段使用的是keepalived的方式,但后续笔者更倾向于使用zookeeper来解决整个MySQL集群的monitor以及failover。

对于任何一个MySQL实例,我们都有一个对应的agent程序,agent跟该MySQL实例放到同一台机器上面,并且定时的对MySQL实例发送ping命令检测其可用性,同时该agent通过ephemeral的方式挂载到zookeeper上面。这样,我们可以就能知道MySQL是否当机,主要有以下几种情况:

机器当机,这样MySQL以及agent都会当掉,agent与zookeeper连接自然断开

MySQL当掉,agent发现ping不通,主动断开与zookeeper的连接

Agent当掉,但MySQL未当

上面三种情况,我们都可以认为MySQL机器出现了问题,并且zookeeper能够立即感知。agent与zookeeper断开了连接,zookeeper触发相应的children changed事件,监控到该事件的管控服务就可以做相应的处理。譬如如果是上面前两种情况,管控服务就能自动进行failover,但如果是第三种,则可能不做处理,等待机器上面crontab或者supersivord等相关服务自动重启agent。

使用zookeeper的好处在于它能很方便的对整个集群进行监控,并能即时的获取整个集群的变化信息并触发相应的事件通知感兴趣的服务,同时协调多个服务进行相关处理。而这些是keepalived或者heartbeat做不到或者做起来太麻烦的。

使用zookeeper的问题在于部署起来较为复杂,同时如果进行了failover,如何让应用程序获取到最新的数据库地址也是一个比较麻烦的问题。

对于部署问题,我们要保证一个MySQL搭配一个agent,幸好这年头有了docker,所以真心很简单。而对于第二个数据库地址更改的问题,其实并不是使用了zookeeper才会有的,我们可以通知应用动态更新配置信息,VIP,或者使用proxy来解决。

虽然zookeeper的好处很多,但如果你的业务不复杂,譬如只有一个master,一个slave,zookeeper可能并不是最好的选择,没准keepalived就够了。

Failover

通过monitor,我们可以很方便的进行MySQL监控,同时在MySQL当机之后通知相应的服务做failover处理,假设现在有这样的一个MySQL集群,a为master,b,c为其slave,当a当掉之后,我们需要做failover,那么我们选择b,c中的哪一个作为新的master呢?

原则很简单,哪一个slave拥有最近最多的原master数据,就选哪一个作为新的master。我们可以通过show slave status这个命令来获知哪一个slave拥有最新的数据。我们只需要比较两个关键字段Master_Log_File以及Read_Master_Log_Pos,这两个值代表了slave读取到master哪一个binlog文件的哪一个位置,binlog的索引值越大,同时pos越大,则那一个slave就是能被提升为master。这里我们不讨论多个slave可能会被提升为master的情况。

在前面的例子中,假设b被提升为master了,我们需要将c重新指向新的master b来开始复制。我们通过CHANGE MASTER TO来重新设置c的master,但是我们怎么知道要从b的binlog的哪一个文件,哪一个position开始复制呢?

GTID

为了解决这一个问题,MySQL 56之后引入了GTID的概念,即uuid:gid,uuid为MySQL server的uuid,是全局唯一的,而gid则是一个递增的事务id,通过这两个东西,我们就能唯一标示一个记录到binlog中的事务。使用GTID,我们就能非常方便的进行failover的处理。

仍然是前面的例子,假设b此时读取到的a最后一个GTID为3E11FA47-71CA-11E1-9E33-C80AA9429562:23,而c的为3E11FA47-71CA-11E1-9E33-C80AA9429562:15,当c指向新的master b的时候,我们通过GTID就可以知道,只要在b中的binlog中找到GTID为3E11FA47-71CA-11E1-9E33-C80AA9429562:15这个event,那么c就可以从它的下一个event的位置开始复制了。虽然查找binlog的方式仍然是顺序查找,稍显低效暴力,但比起我们自己去猜测哪一个filename和position,要方便太多了。

google很早也有了一个Global Transaction ID的补丁,不过只是使用的一个递增的整形,LedisDB就借鉴了它的思路来实现failover,只不过google貌似现在也开始逐步迁移到MariaDB上面去了。

MariaDB的GTID实现跟MySQL 56是不一样的,这点其实比较麻烦,对于我的MySQL工具集go-mysql来说,意味着要写两套不同的代码来处理GTID的情况了。后续是否支持MariaDB再看情况吧。

Pseudo GTID

GTID虽然是一个好东西,但是仅限于MySQL 56+,当前仍然有大部分的业务使用的是56之前的版本,笔者的公司就是55的,而这些数据库至少长时间也不会升级到56的。所以我们仍然需要一套好的机制来选择master binlog的filename以及position。

最初,笔者打算研究MHA的实现,它采用的是首先复制relay log来补足缺失的event的方式,但笔者不怎么信任relay log,同时加之MHA采用的是perl,一个让我完全看不懂的语言,所以放弃了继续研究。

幸运的是,笔者遇到了orchestrator这个项目,这真的是一个非常神奇的项目,它采用了一种Pseudo GTID的方式,核心代码就是这个

代码如下:create database if not exists meta;

drop event if exists metacreate_pseudo_gtid_view_event;

delimiter ;;

create event if not exists

metacreate_pseudo_gtid_view_event

on schedule every 10 second starts current_timestamp

on completion preserve

enable

do

begin

set @pseudo_gtid := uuid();

set @_create_statement := concat('create or replace view metapseudo_gtid_view as select \'', @pseudo_gtid, '\' as pseudo_gtid_unique_val from dual');

PREPARE st FROM @_create_statement;

EXECUTE st;

DEALLOCATE PREPARE st;

end

;;

delimiter ;

set global event_scheduler := 1;

它在MySQL上面创建了一个事件,每隔10s,就将一个uuid写入到一个view里面,而这个是会记录到binlog中的,虽然我们仍然不能像GTID那样直接定位到一个event,但也能定位到一个10s的区间了,这样我们就能在很小的一个区间里面对比两个MySQL的binlog了。

继续上面的例子,假设c最后一次出现uuid的位置为s1,我们在b里面找到该uuid,位置为s2,然后依次对比后续的event,如果不一致,则可能出现了问题,停止复制。当遍历到c最后一个binlog event之后,我们就能得到此时b下一个event对应的filename以及position了,然后让c指向这个位置开始复制。

使用Pseudo GTID需要slave打开log-slave-update的选项,考虑到GTID也必须打开该选项,所以个人感觉完全可以接受。

后续,笔者自己实现的failover工具,将会采用这种Pseudo GTID的方式实现。

在《MySQL High Availability》这本书中,作者使用了另一种GTID的做法,每次commit的时候,需要在一个表里面记录gtid,然后就通过这个gtid来找到对应的位置信息,只是这种方式需要业务MySQL客户端的支持,笔者不很喜欢,就不采用了。

后记

MySQL HA一直是一个水比较深的领域,笔者仅仅列出了一些最近研究的东西,有些相关工具会尽量在go-mysql中实现。

更新

经过一段时间的思考与研究,笔者又有了很多心得与收获,设计的MySQL HA跟先前有了很多不一样的地方。后来发现,自己设计的这套HA方案,跟facebook这篇文章几乎一样,加之最近跟facebook的人聊天听到他们也正在大力实施,所以感觉自己方向是对了。

新的HA,我会完全拥抱GTID,比较这玩意的出现就是为了解决原先replication那一堆问题的,所以我不会考虑非GTID的低版本MySQL了。幸运的是,我们项目已经将MySQL全部升级到56,完全支持GTID了。

不同于fb那篇文章将mysqlbinlog改造支持semi-sync replication协议,我是将go-mysql的replication库支持semi-sync replication协议,这样就能实时的将MySQL的binlog同步到一台机器上面。这可能就是我和fb方案的唯一区别了。

只同步binlog速度铁定比原生slave要快,毕竟少了执行binlog里面event的过程了,而另外真正的slaves,我们仍然使用最原始的同步方式,不使用semi-sync replication。然后我们通过MHA监控整个集群以及进行故障转移处理。

以前我总认为MHA不好理解,但其实这是一个非常强大的工具,而且真正看perl,发现也还是看的懂得。MHA已经被很多公司用于生产环境,经受了检验,直接使用绝对比自己写一个要划算。所以后续我也不会考虑zookeeper,考虑自己写agent了。

您可能感兴趣的文章:正确面对服务器数据存储防止数据丢失轻松搞定VMware虚拟机的数据恢复IIS备份 自动备份IIS设置和恢复IIS设置(自动还原Web服务器)linux svn服务器搭建、客户端操作、备份与恢复MySQL数据库InnoDB引擎下服务器断电数据恢复方法备份和恢复Windows IIS服务器设置的方法备份和恢复Windows IIS服务器设置服务器断电导致虚拟机数据丢失的恢复方法详解

svn5800vt配置?

一,intel版本,带显示器,键盘鼠标

cpu+主板:i59400f+华硕b365m-plusgamings(京东1729元)

显卡:铭_rx5808g(京东939元)

SSD:西部数据sn550512g(京东599元)

内存:威刚ddr42666x2(京东2292=458元)

散热:乔思伯CR-1000(京东88元,4热管带灯)

机箱:银欣PS15B(京东219元,双U3)

电源:长城500w(京东249元)

显示器:戴尔u2417h(京东1299元)

机械键盘:ikbcc87(京东288元)

鼠标:罗技g102(京东109元)

全京东总价:5977元

二,AMD版本,带显示器,键鼠

cpu+主板套装:微星破击炮b450mMortarmax+3600(京东1749元)

显卡:铭_rx5808g(京东939元)

SSD:西部数据sn550512g(京东599元)

内存:十铨ddr43200x2(京东519元)

散热:原装散热

机箱:银欣PS15B(京东219元,双U3)

电源:长城500w(京东249元)

显示器:戴尔u2417h(京东1299元)

机械键盘:ikbcc87(京东288元)

鼠标:罗技g102(京东109元)

全京东总价:5970

其中cpu+主板,ssd如果走淘宝,可以控制总价在5800以内。

若办公需求:显示器推荐u2417h

若游戏需求:显示器推荐AOC144hz238寸24G2,(京东价1169元)

如何在eclipse中配置svn插件?

在Eclipse下安装SVN插件步骤:

1、打开Eclipse,点击菜单Help—>InstallNewSoftware

2、进入安装窗体后,点击安装窗体的Add按钮,然后在弹出的窗体中输入插件安装地址http://subclipsetigrisorg/update_18x

3、等待Eclipse读出安装内容后,勾选需要安装的内容,这里Subclipse是必须安装内容,SVNKit为可选内容(建议全部勾选)

4、点击安装窗体下方的Next按钮,进入下一页后继续点击Next,然后需要手动同意安装许可

5、安装过程中可能会出现安全警告,直接点击OK继续安装即可

6、安装完成后Eclipse会提示是否重启软件,点击Yes重启Eclipse就完成SVN插件的安装了

30怎么安装和使用svn?

SVN,即subversion,是一个开源的版本控制系统,版本控制器。是CVS的派生版。

它是一个C/S模式的软件,既有SVN服务器,也有SVN客户端。利用它可以将数据更新到最新版本,也可以找回历史版本,可以检查文件的修改历史。

1SVN的基本功能

根据文件修改的次数,自动增加版本库的版本号(库中所有的文件共用一个版本号),以便找回历史文件。

防止团队开发时,多人同时修改同一文件导致文件被覆盖或删除。

2软件的安装

服务器的安装(建议先安装服务器)

Setup-Subversion-1617msi

客户端的安装

TortoiseSVN-161621511-win32-svn-1617msi

装完客户端后,需要重启电脑。

安装完毕以后,在桌面右击鼠标,如果出现两个SVN相关的选项,说明SVN安装成功

3服务器的搭建

a创建一个空文件夹,作为SVN服务器的目录例如E:server文件夹的名字可以随便取

b进入该文件夹,右键,选择TortoiseSVN菜单,单击里面的Createrepositoryhere(创建版本库)。系统就会自动在该目录中生成一些文件和文件夹

c修改conf文件夹中的passwd配置文件,添加代码yangjun=123456即添加用户和设置密码

d修改conf文件夹中的svnserveconf主配置文件,去掉#password-db=passwd所在行的注释。(目的是让passwd配置文件生效)

这样,SVN服务器就搭建好了。

4服务器的启动

打开Windows的命令行,执行命令svnserveexe-d-rE:server

之后,SVN服务器的目录(版本库)E:server就可以被SVN客户端访问了。需要注意的是,命令行界面(DOS界面)不能关闭,否则服务就停止了。

5客户端的使用

a新建一个空文件夹作为SVN客户端的目录。例如F:user1

b进入该文件夹,右键,选择TortoiseSVN菜单,单击里面的Repo-browser(浏览版本库),会弹出URL的输入框,输入svn://127001或svn://localhost(前面的表示访问服务器的协议,后面的表示服务器所在主机的ip)。

c右键,选择SVNCheckout(检出),连接服务器(第一次连接服务器的时候,需要检出,以后就不需要了)。

以后,就把SVN客户端的目录F:user1作为自己项目文件的目录,通过SVN服务器进行文件的上传、修改、下载和删除等操作。

6SVN客户端的目录中的文件的图标及含义

问号表示该文件是刚引入的新文件,还未被SVN版本库识别

加号表示该文件已经添加至服务器的观察名单,但还未上传至服务器

对号表示该文件的版本和服务器中的版本是一样的

感叹号表示该文件的内容和服务器中的文件内容不一样,也就是从版本库同步之后,该文件又作了修改,但还未上传至服务器

锁表示该文件已被锁定

客户端目录中新添加的文件,由于还未被服务器识别,所以是以问号标识的。

选择问号标识的文件,右键,选择TortoiseSVN菜单,单击里面的Add选项,添加至服务器的观察名单。这时,问号就变成了加号。

选择加号标识的文件,右键,选择SVNCommit(提交),执行上传。会弹出一个对话框,输入用户名和密码即可。这时,加号就变成了对号。

把对号标识的文件内容进行更改后,对号就变成了感叹号。

选择感叹号标识的文件,右键,选择SVNCommit(提交),执行上传。之后,感叹号就变成了对号。

选择对号标识的文件,右键,选择TortoiseSVN菜单,单击里面的Getlock(锁定)。之后,对号就变成了锁。

选择锁标识的文件,右键,选择TortoiseSVN菜单,单击里面的Releaselock(解锁)。之后,锁就变成了对号。

7远程用户下载SVN服务器中的文件的步骤

这里在F盘新建一个空目录F:user2进行模拟。

进入该文件夹,右键,选择SVNCheckout(检出),连接服务器,输入正确的URL。就会自动把版本库中的所有文件下载到当前目录。

以后,如果版本库中的文件有改动,右键,选择SVNUpdate(更新),就可以和版本库中的文件同步。即当前客户端目录中的文件和版本库中的一致。

可以理解为用户第一次下载用SVNCheckout(检出),以后下载就用SVNUpdate(更新)。

8文件的删除

进入客户端目录F:user1,直接删除你想要删除的文件(这时,只是客户端的文件被删除)。

要想把服务器中的对应文件也删除,可以右键,选择SVNCommit(提交),弹出一个对话框,勾选刚才删除的文件,点击确定。之后服务器中的对应文件也被删除了。

服务器上的某个文件被删除后,当其他客户端的用户,执行SVNUpdate(更新)时,就会和服务器中的文件同步。(对应的文件也会被删除)

9历史版本的找回

如果误删除了服务器上的某个文件,想要找回该文件,可以恢复到历史版本。

在客户端目录F:user1中,右键,选择TortoiseSVN菜单,再单击Updatetorevision,弹出一个对话框,选择revision,输入你想恢复到的版本号(一般是上一个版本号),确定。

10历史版本间的差异对比

如果某一个文件被多个人依次更新修改过,之后,大家也都同步了服务器的版本库。发现,某一个文件被别人更新过,可以通过以下方法查看差异。

选择被更新的文件,右键,选择TortoiseSVN菜单,再单击Diffwithpreviousversion,会对比显示出该文件的历史版本和当前版本的差异。

左边的是历史版本,右边的是当前版本。

11冲突的解决

冲突指定的是,当多个人同时对同一个文件进行修改后,某一个用户(user1)先进行了提交(更新了服务器的版本库),其他用户(user2)后进行的提交,此时,就会出现文件过时而无法提交的现象(因为user2修改的文件版本不是最新版本,所以会提示文件过时,导致无法提交)。

冲突的产生是SVN版本控制器的一个保护措施,可以有效防止客户端中低版本的文件覆盖服务器中高版本的文件。

如何解决冲突?

选择出现冲突的文件,右键,选择TortoiseSVN菜单,再单击Editconflicts,会对比显示出该文件的服务器版本和自身版本的差异。

左边的是服务器的版本,右边的是自身版本。

冲突的解决,是靠人为手动来解决的,一般是冲突相关的多个用户之间商量后,决定以某个文件版本为主。比如,经过大家商量后,决定以服务器中的版本为主。接下来,就应该这样操作:在左边区域(服务器的版本),右键,选择usethiswholefile或者在产生冲突的行,右键,选择usethistextblock来各取所长,依次处理完所有有冲突的行,之后,点击保存,关闭窗口。

然后,选择出现冲突的文件,右键,选择TortoiseSVN菜单,再单击Resolved(已解决)。告诉SVN冲突经大家商量后,已经解决。

这时,该文件就可以正常提交了。选择它,右键,选择SVNCommit(提交),上传至服务器。最后可以看到文件的标识变为对号。

12将SVN服务器安装至系统服务

前面我们说过,SVN客户端操作的过程中,开启SVN服务的命令行窗口不可以关闭,否则,SVN服务也会终止,导致客户端无法连接服务器。

这里,我们可以把SVN服务添加到系统的自启动服务当中。操作方法如下:

重新打开cmd命令行,在命令行中执行以下命令

sccreatesvnservebinpath="D:ProgramFilesSubversionbinsvnserveexe--service--rootE:server"

如果提示“CreateService成功”,则表明创建系统服务成功。此时,添加的服务名为svnserve,状态默认是关闭的,启动方式为手动。

之后,我们就可以利用Windows系统自带的服务管理界面进行管理,比如开启SVN服务,设置为自启动等。而不用通过命令行来控制了。

删除系统服务scdeletesvnserve(如果删除了系统的svnserve服务,我们就又只能通过命令行来开启SVN服务,且不能关闭命令行窗口)

13取消记住的用户名和密码

如果在进行身份验证的时候,我们勾选了记住用户名和密码。那么,当我们需要使用别的用户名进行操作时,便会出现无法更改账号的情况,这时,我们可以取消记住的用户名和密码。下次进行身份验证的时候,我们就可以选择输入其他的用户名和密码。

取消记住用户名和密码的方法:

删除身份验证时保存在系统中的相关文件(auth文件夹)即可。进入C:UsersAdministratorAppDataRoamingSubversion这个目录,删除里面的auth文件夹。

14权限管理

SVN的默认权限设定是匿名用户也可以连接到服务器,访问服务器中的文件,还可以进行下载。也就是说,任何一个人只要知道了SVN服务器所在主机的ip,就可以下载版本库中的所有文件。这种默认的权限设定是不安全的。因此,我们有必要进行SVN服务器的权限管理。

打开SVN服务器的主配置文件E:serverconfsvnserveconf,将这行代码

#anon-access=read

修改成

anon-access=none

保存即可。

之后,匿名用户对服务器就没有读的权限。也就是说,用户在浏览版本库和下载文件时,需要输入用户名和密码。

15权限分配

权限分配指的是,给不同的用户分配不同的权限,比如,需要设定某些用户(管理员)对所有的文件都有读和写的权限,其他用户(普通用户)只有读的权限或者只对服务器目录中的某个文件夹有读和写的权限时,就可以用到权限分配。

这时,我们需要修改服务器配置文件目录(E:serverconf)中的三个配置文件:svnserveconf、passwd和authz。

详细操作方法可自行查阅相关文档·

如何在myeclipse上配置svn插件?

在myeclipse中安装svn图解:

步骤如下:

1找到MyEclipse10在安装目录下的dropins文件夹

2打开dropins文件夹,新建一个svn文件夹

3解压缩下载好的压缩包

4把features和plugins文件夹拷贝到dropins文件夹下的SVN文件夹中

5这样就可以在MyEclipse10中安装好SVN插件了。

右击你想提交的东西,鼠标点击team然后最上面有个“跟数据库同步”点进去之后,如果是第一次点,可能会出现一个对话框,点“YES”就可以了。然后你会看到这几个按钮

第一个就是代表资源库有。你本地没有的。第二个就是代表你本地更新了没提交的。第四个红色的就是说本地和服务器上的冲突了。你可以点击一下你本地没提交的文件。再右击。有个提交。。就可以提交到资源库了。前提是你本地的必须是最新的。如果不是最新的先更新下

我可以恢复ftp共享的无效文件吗?

没有。

您可以在服务器端进行定期备份,这可以防止这种情况发生。

如果服务器没有备份或保存到本地备份,它就不能恢复。ftp是直接连接的服务器,类似于远程桌面。删除一般是不可恢复的,和远程的区别在于不能保存到服务器的回收站。

ftp怎么回退文件?

ftp是不保存历史文件的,所以无法象SVN一样恢复之前的版本,除非你用其他的软件做了实时备份更多专业的科普知识。

交换机格式化了怎么恢复?

答:交换机格式化了的恢复方法。1找到一台与故障机器同型号的正常交换机,在其上配置FTP服务,并设置PC的IP与交换机互通,FTP登录到交换机以后输入dir命令,

注意其中的3个文件:S5300EI-V100R005C01SPC100cc;s23_33_53-v100r005sph008pat;vrpcfgcfg其中前2个文件必须拷贝出来,后面一个文件是配置脚本,如果你有备份脚本,正好可以用上,没有的话,拷不拷都没有关系。拷贝操作为ftp〉put文件名,文件放置的位置为你进入ftp时的目录。

2拿到了配置文件,就需要将其上传到故障机器中去,因为现在故障机器已经没有了IP,所以FTP、TFTP都已经不可行,只能用XMODEM方式,也就是用串口线进行传输。

准备一根串口线,用9600波特率接入故障机器,然后对故障机器进行。这就是交换机格式化了的恢复方法。

10ftp密码忘了怎么办?

可以通过找回密码重新登录。

手机文件删除如何恢复?

首先下载数据恢复DiskDiggerPro这个软件到手机上,下载好以后进行安装。

安装好以后,打开这个软件,在横线上输入要恢复文件所在位置(一般都是内存卡里面的),这里我们输入:sdcard。

输入以后,点击后面的scandevice按钮,选择要恢复的文件类型。

选择好要恢复的文件类型以后,点击ok,软件就开始查找删除的文件了,等待片刻,你想要恢复的文件就会找到了。

找到你想要恢复的文件后,可以通过email(邮件)、FTPupload(上传到云端)、savelocal(保存到本地)这三种方式恢复删除的文件了,快去试试吧。

raid5怎么恢复数据?

1、先将SCSI硬盘柜直接连接到不包含有RAID功能的SCSI扩展卡上,然后在专用(windows2003改装后)的修复平台上以单盘的方式连接服务器阵列中的所有硬盘。

2、为了保护raid5原有数据,避免因数据恢复操作更改原始数据,在所有的数据恢复过程中都必须对所有硬盘以只读方式做完整镜像,同时镜像亦存储于带冗余保护的设备上。

3、然后从镜像文件中分析原RAID的双循环校验参数,搭建虚拟raid平台。

4、在虚拟RAID平台去掉早离线的盘,解释文件系统,此时已经可以导出raid数据。

5、在原来安装raid5阵列的服务器上连接盘阵,重新配置RAID。最后通过网络dd、NFS、SAMBA、FTP、SSH等数据传输方法把所有数据传回新建的raid磁盘阵列中。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 公司里有台机器作为SVN的服务器,现在我想另找一台电脑,然后将SVN中的数据备份到这台电脑上,该怎么办?

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情