Конвейерные данные в командной строке Windows
мне нужно получить резервный дамп большого (~8gb) репозитория svn. Мой текущий метод включает использование svnadmin dump
в файл, а затем с помощью 7-Zip сжать и разделить файл.
> svnadmin dump c:pathtomyrepo > c:svndump.svn
> 7z svndump.svn svndump.7z // or whatever the correct syntax is
мне было интересно, будет ли способ пропустить посредника здесь и получить данные дампа svn, которые будут сжаты за один раз, используя трубы или что-то еще? Возможно ли это? Каким будет синтаксис?
2 ответов
svnadmin dump
дампы к стандарту по умолчанию и 7z
командная строка может читаться из стандартного ввода с помощью -si
переключатель.
svnadmin dump c:\path\to\myrepo | 7z a -si svndump.7z
поскольку ваш образец был именно тем, что я искал, это то, что я сделал в качестве полного решения для "сброса" всех моих репозиториев. Это решение сбрасывает все хранилища svn в 7-zip-файл без несжатого промежуточного.
поместите этот пакетный файл в свой "корень репозитория", например m:\repositories\dump-all - ... летучая мышь!--3-->
pushd %~dp0
SET SEVENZIP="c:\Program Files-Zipz.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:".