2009-04-30 7 views
11

Ho bisogno di ottenere un dump di backup di un repository svn grande (~ 8gb). Il mio metodo attuale prevede l'uso di svnadmin dump in un file e l'utilizzo di 7-Zip per comprimere e dividere il file.Piping data on Windows command prompt

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

mi chiedevo se ci sarebbe un modo per saltare la middle-man qui, e ottenere i dati di dettaglio svn di comprimere in una sola volta utilizzando tubi o qualcosa del genere? È possibile? Quale sarebbe la sintassi?

+3

risposta alla chiusura di votazione: ok, sì, non direttamente programmazione correlata, ma tangenzialmente così. Inoltre ha una risposta definitiva e autorevole, quindi penso che si adatti a Stack Overflow. – nickf

+3

è in tema - riguarda l'uso efficace degli strumenti di programmazione – Alnitak

risposta

0

Perché il tuo campione era esattamente quello che stavo cercando, questo è quello che ho fatto come soluzione completa per "scaricare" tutti i miei repository. Questa soluzione scarica tutti i repository svn nel file 7-zip senza intermedio non compresso.

Mettere il file batch nella "root repository", ad es. m: \ repository \ discarica-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 

E, avviare quella partita come questo se è necessario eseguirlo in bassa priorità, sia di processo (7z + svnadmin) avrà un sacco di cpu

Note: "pushd% ~ dp0" imposta la "directory corrente" su dove si trova il file batch, invece di avviarlo in "c: \ windows \ system32" se lo si avvia da explorer con "esegui come amministratore" . Funziona anche se la cartella di lavoro si trova su un'altra unità.
Non è necessario digitare "m:" e "cd \ repositories". se lo si avvia da "c:" drive.

Problemi correlati