前提
刚接手的SVN服务器,马上就要爆盘了
aaa@ubuntu:/$ df -h
Filesystem Size Used Avail Use% Mounted on
.........
/dev/sdb1 98G 93G 98M 99% /
.........
由于最开始申请服务器的同事,没有挂载数据盘,只用了系统盘,故创建的svn数据存放目录不在数据盘,后面因为项目数据增多了,导致svn数据目录满了,必须要把数据盘挂载出来,并且都迁移数据盘去,否则svn都不能正常用了!
挂载数据盘后
aaa@ubuntu:/$ df -h
Filesystem Size Used Avail Use% Mounted on
.........
/dev/sdb1 98G 93G 98M 99% /
.........
/dev/mapper/vgdata-lvdata 500G 543M 500G 1% /data
没错,这里的 /data就是新挂载上去的数据盘,需要把svn的数据转移过去,那该怎么转移呢,下面记录一下我的方法
备份SVN仓库数据
通过查看svn进程运行的情况,查看仓库目录为 /home/svn
xx@xx:/xx/xx$ ps aux | grep svn
aaa 8222 0.0 0.0 13136 1052 pts/0 S+ 02:33 0:00 grep --color=auto svn
aaa 17723 0.0 0.0 76932 2816 ? Ss Jan04 0:01 svnserve -d -r /home/svn/
用 svnadmin dump备份数据到新挂载的的盘下
nohup svnadmin dump /home/svn/repository > /data/svn-backup.svn > cbackup.log 2>&1 &
操作成功,打开日志会看到如下显示:
.........
Dumped revision 5000
Dumped revision 5001
Dumped revision 5002
Dumped revision 5003
创建新的SVN仓库目录
在/data目录下创建新的库地址
mkdir /data/svn
mkdir /data/svn/repository
svnadmin create /data/svn/repository
把备份文件还原到新的目录
nohup svnadmin load /data/svn/repository < /data/svn-backup.svn > lbackup.log 2>&1 &
还原的过程中,查看日志,会输出这些内容,我这里只是模拟格式,不是真实的,仅供参考哈,等待还原完成即可
<<< Started new transaction, based on original revision 1
* editing path : test ... done.
* editing path : test/1.txt ... done.
------- Committed revision 1 >>>
<<< Started new transaction, based on original revision 2
* editing path : luozhanfeng ... done.
* editing path : luozhanfeng/test.txt ... done.
------- Committed revision 2 >>>
<<< Started new transaction, based on original revision 3
* editing path : Desktop.ini ... done.
------- Committed revision 3 >>>
<<< Started new transaction, based on original revision 4
* editing path : robotsimulation ... done.
------- Committed revision 4 >>>
<<< Started new transaction, based on original revision 5
* editing path : robotsimulation/Assets ... done.
* editing path : robotsimulation/Assets/Com ... done.
* editing path : robotsimulation/Assets/Com/Com.asmdef ... done.
* editing path : robotsimulation/Assets/Com/Com.asmdef.meta ... done.
.........
迁移过程中异常解决
如果在迁移过程中,发现如下异常
svnadmin: Dump stream contains a malformed header (with no ':') at '* Dumped revision 0.'
解决方法如下:
grep --binary-files=text -v '^* Dumped revision' /data/svn-backup.svn > /data/svn-backup-right.svn
然后就可以将svn-backup-right.svnt通过svnadmin导入到svn repository中,即可
nohup svnadmin load /data/svn/repository < /data/svn-backup-right.svn > lbackup.log 2>&1 &
重启svn服务(修改配置)
通过查看svn进程运行的情况发现,svn服务端设置的目录还是原来将要爆盘的/home/svn
xx@xx:/xx/xx$ ps aux | grep svn
aaa 8222 0.0 0.0 13136 1052 pts/0 S+ 02:33 0:00 grep --color=auto svn
aaa 17723 0.0 0.0 76932 2816 ? Ss Jan04 0:01 svnserve -d -r /home/svn/
我们需要kill掉svn的进程,重新启动并修改路径为新的路径/data/svn。
kill 17723
svnserve -d -r /data/svn/
这样客户端应该就可以正常使用了,迁移目录就完成了!