Данные о трубопроводах в командной строке Windows

Мне нужно получить резервный дамп большого (~ 8 гб) svn-репозитория. Мой текущий метод включает в себя использование svnadmin dump для файла, а затем с помощью 7-Zip для сжатия и разбиения файла.

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

Мне было интересно, если бы здесь был способ пропустить среднего человека, и получить данные дампа svn, которые нужно сжать за один проход, используя трубы или что-то еще? Это возможно? Каким будет синтаксис?

Ответ 2

Поскольку ваш образец был именно тем, что я искал, это то, что я сделал как полное решение для "сброса" всех моих репозиториев. Это решение сбрасывает все репозитории svn в 7-zip файл без несжатого промежуточного элемента.

Поместите этот пакетный файл в свой "корень репозитория", например. м:\репозитории\дамп-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

И, начните эту партию, как это, если вам нужно запустить ее с низким приоритетом, оба процесса (7z + svnadmin) будут принимать много CPU

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

Примечания: "pushd% ~ dp0" устанавливает "текущий каталог" туда, где находится командный файл, а не запускать его в "c:\windows\system32", если вы запустите его из проводника с "запустить как администратор". Он также работает, если рабочая папка находится на другом диске.
Не нужно вводить "m:" и "cd\repositories". если вы запустите его с диска "c:".