macbook下的svn服务的备份和恢复

因为之前macbook的硬盘坏了,代码都存在svn中,需要重新建立svn服务器,并恢复代码。

一、启动svn服务

因为macbook下的svn服务是自带的,只需要在svn服务目录下,重新设置启动目录即可。命令如下:

svnserve -d -r /document/project/svn/

二、备份svn库

假设module是需要恢复的模块,备份路径是PATH,命令如下:

/usr/bin/svnadmin dump ./$module/ > ./$PATH/svn.$module.bak

显示

* Dumped revision 0.
* Dumped revision 1.
* Dumped revision 2.
* Dumped revision 3.
* Dumped revision 4.
* Dumped revision 5.

三、恢复svn库

首先需要新建一个新的module代码库

/usr/bin/svnadmin create $module

然后执行恢复命令,将svn备份导入到新的代码库中

/usr/bin/svnadmin load ./$module/ < ./$PATH/svn.$module.bak

显示

<<< Started new transaction, based on original revision 1
* editing path : trunk … done.

——- Committed revision 1 >>>

<<< Started new transaction, based on original revision 2
* editing path : branches … done.

——- Committed revision 2 >>>
至此,svn服务恢复完毕。在host文件设置svn的域名后,就可以通过TortoiseSVN访问了。

做一个批量处理的脚本

cat restore-old-svn.sh
#!/bin/bash
PATH=svn-backup-2016
MODULE=$1
if [ -z $MODULE ] ; then
echo ./restore-old-svn.sh \$module
exit
fi
/usr/bin/svnadmin dump ./$module/ > ./$PATH/svn.$module.bak
/bin/mv $module ./$PATH/$module-old
/bin/mkdir $module
/usr/bin/svnadmin create $module
/usr/bin/svnadmin load ./$module/ < ./$PATH/svn.$module.bak
/bin/echo Restore svn $module finish