11

I need to get a backup dump of a large (~8gb) svn repository. My current method involves using svnadmin dump to a file and then using 7-Zip to compress and split the file.

> svnadmin dump c:\path\to\myrepo > c:\svndump.svn
> 7z svndump.svn svndump.7z      // or whatever the correct syntax is

I was wondering if there would be a way to skip the middle-man here, and get the svn dump data to be compressed in one go by using pipes or something? Is this possible? What would the syntax be?

nickf
  • 537,072
  • 198
  • 649
  • 721
  • 3
    response to the close vote: ok, yes, not directly programming related, but tangentially so. Plus it has a definitive and authoritative answer, so I think it fits on Stack Overflow. – nickf Apr 30 '09 at 07:07
  • 3
    it's on topic - it relates to effective use of programming related tools – Alnitak Apr 30 '09 at 07:11

2 Answers2

19

svnadmin dump dumps to standard out by default and the 7z command line can read from standard input using the -si switch.

svnadmin dump c:\path\to\myrepo | 7z a -si svndump.7z
nickf
  • 537,072
  • 198
  • 649
  • 721
David Webb
  • 190,537
  • 57
  • 313
  • 299
0

Because your sample was exactly what I was looking for, this is what I did as a complete solution to "dump" all my repositories. That solution dump all svn repositories to 7-zip file without uncompressed intermediate.

Put that batch file in your "repository root", e.g. m:\repositories\dump-all.bat

pushd %~dp0
SET SEVENZIP="c:\Program Files\7-Zip\7z.exe" a -mx1 -si 
FOR /f "tokens=*" %%i in ('DIR /a:d /b') DO svnadmin dump %%i | %SEVENZIP% ..\_svndump\%%i.dump.7z

And, start that batch like this if you need to run it in low priority, both process (7z + svnadmin) will take a lot of cpu

start /low m:\repositories\dump-all.bat

Notes: "pushd %~dp0" set the "current directory" to where the batch file is, instead of starting it in "c:\windows\system32" if you start it from explorer with "run as administrator". It also works if the working folder is on another drive.
No need to type "m:" and "cd \repositories". if you start it from "c:" drive.

foxontherock
  • 1,776
  • 1
  • 13
  • 16