Передача данных в командной строке Windows - PullRequest
11 голосов
/ 30 апреля 2009

Мне нужно получить резервный дамп большого (~ 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 ]

19 голосов
/ 30 апреля 2009
0 голосов
/ 11 февраля 2016

Поскольку ваш образец был именно тем, что я искал, это то, что я сделал как полное решение, чтобы «сбросить» все мои репозитории. Это решение создает дамп всех хранилищ 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) будут занимать много процессора

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

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

...