svnadmin dump
svnadmin hotcopy
svnsync
优点:比较灵活,可以全量备份也可以增量备份,并提供了版本恢复机制。
缺点:如果版本比较大,如版本数增长到数万、数十万,那么dump的过程将非常慢;备份耗时,恢复更耗时;不利于快速进行灾难恢复,建议在版本数比较小的情况下使用这种备份方式。
优点:备份过程较快,灾难恢复也很快;如果备份机上已经搭建了svn服务,甚至不需要恢复,只需要进行简单配置即可切换到备份库上工作。
缺点:比较耗费硬盘,需要有较大的硬盘支持。
优点:当制作成2个镜像库的时候起到双机实时备份的作用;
缺点:当作为2个镜像库使用时,没办法做到“想完全抛弃今天的修改恢复到昨晚的样子”;而当作为普通备份机制每日备份时,操作又较前2种方法麻烦。
下面就先具体地介绍安装配置svn服务端,待操作完这一步后续在待迁移目标服务器上安装配置svn服务端就比较方便顺手了。
$yum install subversion #即可安装svn服务端
$svn help #查看svn帮助手册
$svn --version #查看svn当前版本
$mkdir -p /home/www/svn/web/
$svnadmin create /home/www/svn/web/
$tree /home/www/svn/web
[root@bogon web]# tree /home/www/svn/web
/home/www/svn/web
├── conf
│ ├── authz
│ ├── authz.bak
│ ├── passwd
│ ├── passwd.bak
│ ├── svnserve.conf
│ └── svnserve.conf.bak
├── db
│ ├── current
│ ├── format
│ ├── fsfs.conf
│ ├── fs-type
│ ├── min-unpacked-rev
│ ├── rep-cache.db
│ ├── revprops
│ │ └── 0
│ │ ├── 0
│ │ ├── 1
│ │ └── 2
│ ├── revs
│ │ └── 0
│ │ ├── 0
│ │ ├── 1
│ │ └── 2
│ ├── transactions
│ ├── txn-current
│ ├── txn-current-lock
│ ├── txn-protorevs
│ ├── uuid
│ └── write-lock
├── format
├── hooks
│ ├── post-commit.tmpl
│ ├── post-lock.tmpl
│ ├── post-revprop-change.tmpl
│ ├── post-unlock.tmpl
│ ├── pre-commit.tmpl
│ ├── pre-lock.tmpl
│ ├── pre-revprop-change.tmpl
│ ├── pre-unlock.tmpl
│ └── start-commit.tmpl
├── locks
│ ├── db.lock
│ └── db-logs.lock
└── README.txt
10 directories, 35 files
[root@bogon web]#
conf
├── authz:权限控制文件
├── authz.bak
├── passwd:帐号密码文件
├── passwd.bak
├── svnserve.conf:SVN服务配置文件
└── svnserve.conf.bak
$vim /home/www/svn/web/conf/authz
[/] :仓库下所有文件/文件夹
yunwei=rw :【yunwei】用户具有读写权限
test=r :【test】用户具有只读权限
*= :除上述俩用户外,其他用户没有任何权限
$vim /home/www/svn/web/conf/passwd
[users]
yunwei=yunwei :用户名=密码
$vim /home/www/svn/web/conf/svnserve.conf
[general]
anon-access=none :匿名用户没有访问权限
auth-access=write :已经被授权的用户具有写权限操作的权利
password-db=passwd :密码信息的文件路径(路径相对于本svnserve.conf而言)
authz-db=authz :访问控制文件信息的文件路径(路径相对于本svnserve.conf而言)
realm=/home/www/svn/web/ :认证命名空间,svn会在认证提示里显示。
$svnserve -d -r /home/www/svn/web #-d:守护进程;-r:后台运行
$ps -ef|grep svn
$killall svnserve
前提说明:源服务器10.80.80.238的svn仓库目录【/home/svn/】,待操作的目标服务器10.80.80.234仓库目录【/home/www/svn/web】,俩服务器svn服务端口均使用默认端口3690。
具体细节:
$mkdir -p /home/linux/downloads/ #在源服务器上操作【创建目录】用于存放备份出来的仓库
$svnadmin dump /home/svn/ > /home/linux/downloads/svnRepos.dump.backup
#在源服务器备份svn仓库
#svnRepos.dump.backup :已备份好的svn仓库
$svnadmin load /home/www/svn/web < /home/linux/svnbackupdir/svnRepos.dump.backup
$svnserve -d -r /home/www/svn/web/
由于服务端svn的ip地址变更了导致原有的客户端如果不做配置变更那就无法连接服务端,所以客户端想要连接到目标服务器svn需进行类似如下的操作变更:
1)Windows下【TortoiseSVN】对仓库目录做变更【鼠标右键】:
【确定】完即可。
[root@localhost pro1dir]# svn info
Path: .
Working Copy Root Path: /home/linux/downloads/svntestprojects/pro1dir
URL: svn://10.80.80.238
Repository Root: svn://10.80.80.238
Repository UUID: d40b338c-41be-439f-aade-8b6a1aebb690
Revision: 2
Node Kind: directory
Schedule: normal
Last Changed Author: yunwei
Last Changed Rev: 2
Last Changed Date: 2019-01-07 15:11:39 +0800 (Mon, 07 Jan 2019)