Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从多个文件还原SVN备份_Svn - Fatal编程技术网

从多个文件还原SVN备份

从多个文件还原SVN备份,svn,Svn,我有一个非常大(~6GB)的SVN存储库,为此我编写了一个批处理文件脚本,每天进行增量备份。脚本将检查上次备份何时运行,并仅转储此后的修订 文件名为:backup-{lower\u revision}-{higher\u revision}.svn例如:backup-156-162.svn,backup-163-170.svn 这意味着我有相当多的小转储文件,我想这很好(比很多6GB转储文件好),但我有点担心,如果我需要从这些备份中恢复,需要做多少工作 为了减少文件总数,我已经开始在每个月的第一

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

文件名为:
backup-{lower\u revision}-{higher\u revision}.svn
例如:
backup-156-162.svn
backup-163-170.svn

这意味着我有相当多的小转储文件,我想这很好(比很多6GB转储文件好),但我有点担心,如果我需要从这些备份中恢复,需要做多少工作

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

我一直在考虑的是:

  • 手册:
    svnadmin加载c:\myRepo

    等待
    svnadmin加载c:\myRepo

    等待
    等等
  • 批处理文件,使上述过程不那么繁琐
  • 将每个文件追加到一起并进行一次加载(如果可能的话?)
如果我需要恢复,使用这些文件的最佳方法是什么


ps:操作系统是Windows

无论您提出了什么解决方案,我都绝对建议您尝试恢复。通过这种方式,你可以验证这个过程是否达到了你真正想要的目的,并且当你需要愤怒地使用它时,你能够成功地完成它


我会尝试你的过程,因为你现在有它,如果这个过程是可以容忍的,那么越简单越好,不要弄乱它。如果这看起来是一项艰巨的工作,那就想尽一切办法寻找优化的机会。

你只需将日期编号为[01,02,…31]就可以重命名文件,这样你的文件就可以轻松排序了 对于转储,知道其中包含哪些修订并不重要

<>我遵循一种不同的方法,因为像这样装载大量的回购需要一些时间,所以你应该考虑以下内容: 您可以使用svnadmin hotcopy每周/每月对存储库进行热拷贝。 每天您都应该进行增量转储以获取最新版本,以便检索您只需调用的最新版本
svnlook[live_repo]->为您提供实时存储库的最新版本

svnlook[copied_repo]->为您提供每周热拷贝备份的最新版本

现在,您可以使用两个修订号从实时回购运行转储。
优点:

  • 更快地启动备份存储库并再次运行(转储需要几个小时!)
  • 更少的转储文件
  • 更少的脚本编写工作
  • 可扩展到“每次提交”-通过提交后挂钩进行备份,因此您不会丢失任何修订

我建议每天运行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 ::此脚本备份subversion存储库。 ::重置临时备份存储 rmdir/S/Q C:\svn备份 mkdir C:\SVNBACKUP ::启动SVN备份。使用svadmin热拷贝 svnadmin dump/svn/myProj1>/home/username/myProj1Bak 对于/f“标记=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
彼得的命令实际上是:

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

好吧,问题是我实际上还没有一个过程——我试着从最好的开始:)好的,你描述了你的备份文件是如何创建的(而且你有很多备份文件),所以你必须让一半的过程正常工作。不,“svnlook”是一个实用程序;svn没有“look”子命令。