【问题标题】:Restore SVN backups from multiple files从多个文件恢复 SVN 备份
【发布时间】:2011-12-10 00:27:55
【问题描述】:

我有一个非常大的 (~6GB) SVN 存储库,为此我编写了一个批处理文件脚本来每天进行增量备份。该脚本检查上次备份的运行时间并仅转储自那时以来的修订。

文件名为:backup-{lower_revision}-{higher_revision}.svn 例如:backup-156-162.svnbackup-163-170.svn

这意味着我有很多小转储文件,我想这很好(比很多 6GB 转储文件好),但我有点担心从我应该需要这些备份。

为了减少文件总数,我已经开始在每个月的第一天进行一次完整转储,但是,如果我需要在 30 日恢复,那将是 30 个转储文件,这可能需要一段时间.

我一直在考虑的是:

  • 手册:
    svnadmin load c:\myRepo < backup-1-10.svn
    等待
    svnadmin load c:\myRepo < backup-11-24.svn
    等待
    等等……
  • 批处理文件使上述过程不那么繁琐
  • 将每个文件附加在一起并进行一次加载(如果这可能吗?)

处理这些文件的最佳方式是什么,我是否需要恢复?

ps:操作系统是 Windows

【问题讨论】:

    标签: svn


    【解决方案1】:

    您应该重命名您的文件,只需将日期编号为 [01, 02,..31],这样您的文件就可以轻松排序 对于转储,知道里面有哪些修订并不重要。

    我采用了不同的方法,因为像这样加载回一个巨大的 Repo 需要一些时间,所以你应该考虑以下几点:
    您可以每周/每月使用 svnadmin hotcopy 对存储库进行热复制。 每天您都应该进行增量转储以获取最新版本以检索您只需调用的最新版本
    svnlook youngest [live_repo] -> 为您提供实时存储库的最新版本

    svnlook youngest [copied_repo] -> 为您提供每周 hotcopy 备份的最新修订版

    现在您可以使用两个修订号从实时存储库中运行转储。
    优点:

    • 让您的备份存储库重新启动和运行要快得多(转储需要数小时!)
    • 更少的转储文件
    • 更少的脚本编写工作
    • 可通过 post-commit-hook 扩展为“每次提交”备份,因此您会担心丢失任何修订版

    【讨论】:

      【解决方案2】:

      无论您提出何种解决方案,我都绝对建议您进行试用恢复。这样您就可以验证该过程是否符合您的实际要求,并且当您需要在愤怒中使用它时,您将能够成功完成它。

      我会按照您现在的方式尝试您的流程,如果流程可以接受,那么越简单越好,不要乱用它。如果看起来工作量很大,那么一定要寻找优化机会。

      【讨论】:

      • 问题是我实际上还没有一个流程——我正在尝试从最好的开始:)
      • 对,你描述了你的备份文件是如何创建的(而且你有很多),所以你必须让这个过程工作一半。
      【解决方案3】:

      我建议每天运行一个转储命令,只保留最后 5 个转储。这对你来说是 30 场演出。

      这是我使用的运行自动转储的脚本,但我确实手动删除了备份:

      ::此脚本备份 subversion 存储库。 ::重置临时备份存储 rmdir /S /Q C:\SVNBACKUP mkdir C:\SVNBACKUP ::启动SVN备份。使用 svadmin 热拷贝 svnadmin 转储 /svn/myProj1 > /home/username/myProj1Bak for /f "tokens=2-4 delims=/ " %%g in ('date /t') do ( 设置 mm=%%g 设置 dd=%%h 设置 yy=%%i ) 如果存在 "\\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

      【讨论】:

        【解决方案4】:

        彼得的命令实际上是:

        svn look youngest [live_repo]
        svn look youngest [copied_repo]
        

        【讨论】:

        • 不,'svnlook' 是一个实用程序; svn 没有“look”子命令。
        猜你喜欢
        • 2010-10-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-08-29
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多