必须记录的事情-SVN版本库备份 svn异地备份

先说一下,现在很是兴奋,有一个难题被自己攻破。戴上耳机,听着音乐,很是舒服。

为了这个svn增量备份的脚本,反复测试了一个上午。从准备环境到最终试验成功,不断地在网上找资料,不断地尝试,每一次都是失败。

参考了网上很多的例子,几乎都是两个脚本完成svn的增量备份。网上的两个脚本的例子如下:

在hooks下建立一个文件post-commit.bat,内容如下:

set SVN_HOME="C:VisualSVNServer"
set SVN_ROOT=D:Repositories
set DELTA_BACKUP_SVN_ROOT=D:Repositoriesbak
set LOG_FILE=%1backup.log
echo backup revision %2 >>%LOG_FILE%
for /r %SVN_ROOT% %%I in (.) do if C:Repositories%%~nI == %1%SVN_ROOT%%%~nIhooksdeltabackup.bat %%~nI %2
goto end
:end

另一个bat文件:deltabackup.bat

@echo 正在备份版本库%2......
%SVN_HOME%binsvnadmin dump %SVN_ROOT%%1 --incremental --revision%2 >> D:Repositories
%1.dump
@echo 版本库%2成功备份到了%3!

他们的意思是使用post-commit.bat 调用deltabackup.bat批处理文件,经过我多次试验不通过。主要原因是post-commit.bat中的for循环部分始终不能执行,用日志调试了很多遍就是不执行。最后放弃这种方式,改为在一个文件中测试通过:

我的资源库的目录结构:

D:svnroot
│ authz
│ authz-windows
│ htpasswd
│ server.pid

├─project1
│ │ backup.log
│ │ format
│ │ README.txt
│ │
│ ├─conf
││authz
││passwd
││svnserve.conf
│ │
│ ├─dav
│ │ └─activities.d
│ ├─db
│ │ │current
│ │ │format
│ │ │fs-type
│ │ │fsfs.conf
│ │ │min-unpacked-rev
│ │ │rep-cache.db
│ │ │txn-current
│ │ │txn-current-lock
│ │ │uuid
│ │ │write-lock
│ │ │
│ │ ├─revprops
必须记录的事情-SVN版本库备份 svn异地备份
│ │ │└─0
│ ││0
│ ││1
│ ││10
│ ││2
│ ││3
│ ││4
│ ││5
│ ││6
│ ││7
│ ││8
│ ││9
│ │ │
│ │ ├─revs
│ │ │└─0
│ ││0
│ ││1
│ ││10
│ ││2
│ ││3
│ ││4
│ ││5
│ ││6
│ ││7
│ ││8
│ ││9
│ │ │
│ │ ├─transactions
│ │ └─txn-protorevs
│ ├─hooks
││post-commit.bat
││post-commit.rar
││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-logs.lock
│db.lock

└─project2
│ format
│ README.txt

├─conf
│authz
│passwd
│svnserve.conf

├─db
│ │ current
│ │ format
│ │ fs-type
│ │ fsfs.conf
│ │ min-unpacked-rev
│ │ txn-current
│ │ txn-current-lock
│ │ uuid
│ │ write-lock
│ │
│ ├─revprops
│ │ └─0
││0
│ │
│ ├─revs
│ │ └─0
││0
│ │
│ ├─transactions
│ └─txn-protorevs
├─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-logs.lock
db.lock

然后把写好的脚本post-commit.bat 放在project1的hooks下,对测试项目Project1进行版本库修改测试,经测试文件正常写入到D:svnrootbakdelta下的Project1.dump文件。测试成功的代码如下,供大家参考

@echo off

@echo svn服务器的安装地址
set SVN_HOME=E:Program FilesVisualSVN Server
@echo svn资源库根目录
set SVN_ROOT=D:svnroot
@echo svn需要备份到的目录 确保delta文件夹存在
set DELTA_BACKUP_SVN_ROOT=D:svnrootbakdelta
@echo svn增量备份的日志文件
set LOG_FILE=%1backup.log
echo backup revision %2 >>%LOG_FILE%

for /r %SVN_ROOT% %%I in (.) do if %SVN_ROOT%%%~nI == %1"%SVN_HOME%binsvnadmin" dump %1 --incremental --revision %2>>�LTA_BACKUP_SVN_ROOT%%%~nI.dump

goto end

:end

  

爱华网本文地址 » http://www.aihuau.com/a/25101012/122505.html

更多阅读

哪些车险是必须买的 车险都买哪几种

不管是新车还是二手车,上好牌照后,都需要购买保险。但是现如今,车辆保险种类众多,有些车险并不是必须要购买的。下面一起看看哪些车险是必须买的?根据不同的情况,小编把新车和二手车必须买的车险区别开来。哪些车险是必须买的——步骤/方

系统推荐——《那些不想做又必须做的事》 推荐系统 pdf

10月份的推荐书是《那些不想做又必须做的事》。本书作者特里·高格纳是一个富有经验的企业家和个人成功教练。他指出,每一天,人们都在做着两种事情:一种是与现在相关的,通常是比较舒服、但对创造美好未来没有太多帮助的事情;一种是与将

磁带库和磁盘备份的优劣对比 磁带库备份

1.磁盘备份技术对磁带备份的影响随着磁盘技术的发展,尤其是SATA磁盘技术的出现,磁盘备份正不断蚕食磁带产品的传统领地,而各大存储论坛上关于磁盘和磁带的辩论也甚嚣尘上。磁盘备份之所以迅速的攻城略地,其最强有力的武器是数据备份和恢

声明:《必须记录的事情-SVN版本库备份 svn异地备份》为网友孤单海岸线分享!如侵犯到您的合法权益请联系我们删除