2009-04-30 15 views
11

Necesito obtener un volcado de respaldo de un repositorio de svn grande (~ 8 gb). Mi método actual implica usar svnadmin dump en un archivo y luego usar 7-Zip para comprimir y dividir el archivo.Datos de tuberías en el símbolo del sistema de Windows

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

Me preguntaba si habría una manera de saltarse el medio-hombre aquí, y obtener los datos de volcado SVN para ser comprimido de una sola vez mediante el uso de tuberías o algo? es posible? ¿Cuál sería la sintaxis?

+3

respuesta al cierre votación: bien, sí, no directamente relacionado con la programación, pero tangencialmente. Además, tiene una respuesta definitiva y autorizada, así que creo que encaja en Stack Overflow. – nickf

+3

está en el tema - se refiere al uso efectivo de las herramientas relacionadas con la programación – Alnitak

Respuesta

0

Debido a que su muestra era exactamente lo que estaba buscando, esto es lo que hice como una solución completa a "volcar" todos mis repositorios. Esa solución descarga todos los repositorios svn al archivo 7-zip sin intermediarios sin comprimir.

Ponga ese archivo por lotes en su "raíz del repositorio", p. m: \ repositorios \ volcado-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 

Y, iniciar ese lote como éste si es necesario ejecutarlo en baja prioridad, tanto en el proceso (7z + svnadmin) tendrá una gran cantidad de CPU

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

Notas: "pushd% ~ dp0" establece el "directorio actual" donde está el archivo por lotes, en lugar de iniciarlo en "c: \ windows \ system32" si lo inicia desde el explorador con "ejecutar como administrador" . También funciona si la carpeta de trabajo está en otra unidad.
No es necesario escribir "m:" y "cd \ repositories". si lo inicia desde la unidad "c:".

Cuestiones relacionadas