Передача данных в командной строке 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 файл без несжатого промежуточного файла.

Поместите этот пакетный файл в свой "корень хранилища", например, 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

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

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

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

Другие вопросы по тегам