SVN本机不同分区目录迁移

前提

刚接手的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/

这样客户端应该就可以正常使用了,迁移目录就完成了!

你可能感兴趣的:(SVN本机不同分区目录迁移)