我有一个非常大的(~6GB)SVN存储库,为此我编写了一个批处理文件脚本来每天进行增量备份。该脚本检查上次备份的运行时间,并仅转储此后的修订版。
文件的名称为:backup-{lower_revision}-{higher_revision}.svn
,例如:backup-156-162.svn
,backup-163-170.svn
。
这意味着我有很多小转储文件,我猜这很好(比很多6GB转储文件要好),但是我有点担心要从中恢复多少工作我需要这些备份。
为了减少文件总数,我已经开始在每个月的第一天进行完全转储,但是,如果我需要在30日恢复,那将是30个转储文件可能需要一段时间
我一直在考虑的是:
svnadmin load c:\myRepo < backup-1-10.svn
svnadmin load c:\myRepo < backup-11-24.svn
使用这些文件的最佳方法是什么?我需要恢复吗?
ps:操作系统是Windows
答案 0 :(得分:5)
您应该通过编号[01,02,... 31]来重命名文件,以便轻松排序文件 对于转储,了解哪些修订版本并不重要。
我采用了不同的方法,因为像这样加载一个巨大的回购需要一些时间,所以你应该考虑以下几点:
您可以使用 svnadmin hotcopy 每周/每月热备份一次存储库。
每天都应该进行增量转储,以获取最新的修订版本,以便检索您必须调用的最新修订版本
svnlook最年轻[live_repo] - &gt;为您提供实时存储库的最新版本
svnlook最年轻[copied_repo] - &gt;为您提供每周热门备份所备份的最新修订
现在您可以使用两个版本号从您的live-repo运行转储 优点:
答案 1 :(得分:3)
无论您提出哪种解决方案,我都肯定会建议您进行试用版恢复。通过这种方式,您可以验证流程是否符合您的实际需求,并且当您需要在愤怒中使用它时,您将能够成功完成该流程。
我会尝试你现在的过程,如果过程是可以容忍的,那么更简单更好,不要乱用它。如果看起来很多工作,那么一定要寻找优化机会。
答案 2 :(得分:0)
我建议每天运行一个dump命令,并保留最后5个转储。那是你的30场演出。
这是一个运行我使用的自动转储但我手动删除备份的脚本:
::This script backs up the subversion repository. ::Reset Temp backup storage rmdir /S /Q C:\SVNBACKUP mkdir C:\SVNBACKUP ::Initiate SVN backup. Use svadmin hotcopy svnadmin dump /svn/myProj1 > /home/username/myProj1Bak for /f "tokens=2-4 delims=/ " %%g in ('date /t') do ( set mm=%%g set dd=%%h set yy=%%i ) if exist "\\networkdrive\Clients\SVN\%mm%-%dd%-%yy%" ( rd /S /Q "\\networkdrive\Clients\SVN\%mm%-%dd%-%yy%" ) xcopy "/home/username/myProj1Bak" "\\networkdrive\Clients\SVN\%mm%-%dd%-%yy%" /s /i
答案 3 :(得分:0)
彼得的命令实际上是:
svn look youngest [live_repo]
svn look youngest [copied_repo]