Восстановление резервных копий SVN из нескольких файлов - PullRequest
2 голосов
/ 10 октября 2008

У меня очень большой (~ 6 ГБ) репозиторий SVN, для которого я написал сценарий пакетного файла, чтобы делать инкрементное резервное копирование каждый день. Сценарий проверяет, когда было выполнено последнее резервное копирование, и с тех пор выдает только ревизии.

Файлы имеют имена: backup-{lower_revision}-{higher_revision}.svn Например: backup-156-162.svn, backup-163-170.svn.

Это означает, что у меня довольно много небольших файлов дампа, что, я думаю, нормально (лучше, чем много файлов дампа 6 ГБ), но я немного беспокоюсь о том, сколько работы потребуется для восстановления эти резервные копии мне нужно.

Чтобы уменьшить общее количество файлов, я выполнил полный дамп первого числа каждого месяца, но все же, если мне нужно восстановить 30-е, это будет 30 дампов, которые могут занять некоторое время. .

То, что я рассматривал, это:

  • Руководство:
    svnadmin load c:\myRepo < backup-1-10.svn
    ожидание
    svnadmin load c:\myRepo < backup-11-24.svn
    ожидание
    и т.д ...
  • Пакетный файл, чтобы сделать этот процесс немного менее утомительным
  • Присоединение каждого из файлов вместе и выполнение одной загрузки (если это вообще возможно?)

Как лучше всего работать с этими файлами, если мне нужно восстановить?

ps: ОС Windows

Ответы [ 4 ]

5 голосов
/ 10 октября 2008

Вы должны переименовать ваши файлы, просто указав номер дня [01, 02, .. 31], чтобы ваши файлы могли быть легко отсортированы Для дампа не важно знать, какие ревизии находятся внутри.

Я придерживаюсь другого подхода, так как загрузка такого репо занимает некоторое время, поэтому вам следует учесть следующее:
Вы можете использовать горячую копию svnadmin для горячей копии хранилища каждую неделю / каждый месяц. Каждый день вы должны делать инкрементный дамп для получения последних ревизий, для получения последних ревизий, которые вам просто нужно вызвать
svnlook youngest [live_repo] -> дает вам самую последнюю версию вашего живого репозитория

svnlook youngest [copied_repo] -> предоставляет вам последнюю ревизию, для которой вы создали еженедельную горячую копию

теперь вы можете запустить дамп из вашего репо, используя номера обеих ревизий.
Преимущества:

  • намного быстрее, чтобы восстановить и запустить резервное хранилище (сброс занимает часы!)
  • меньше файлов дампа
  • меньше скриптов
  • расширяется до резервных копий "per-commit" через post-commit-hook, так что вы никогда не потеряете любую ревизию
3 голосов
/ 10 октября 2008

Независимо от решения, которое вы придумали, я бы определенно рекомендовал сделать пробное восстановление. Таким образом, вы можете проверить, что процесс делает то, что вы действительно хотите, и что вы сможете успешно завершить его, когда вам нужно использовать его в гневе.

Я бы попробовал ваш процесс так, как он есть у вас сейчас, и если процесс терпим как есть, то проще - лучше и не связывайтесь с ним. Если это кажется большой работой, то непременно ищите возможности для оптимизации.

0 голосов
/ 23 июля 2010

Команды Петра на самом деле:

svn look youngest [live_repo]
svn look youngest [copied_repo]
0 голосов
/ 25 ноября 2008

Я бы предложил запускать команду дампа каждый день и просто сохранять последние 5 дампов. Это 30 концертов для вас.

Вот скрипт для запуска автоматических дампов, которые я использую, но я удаляю резервные копии вручную:

::This script backs up the subversion repository.

::Reset Temp backup storage

rmdir /S /Q C:\SVNBACKUP
mkdir C:\SVNBACKUP

::Initiate SVN backup. Use svadmin hotcopy
svnadmin dump /svn/myProj1 > /home/username/myProj1Bak

for /f "tokens=2-4 delims=/ " %%g in ('date /t') do (
  set mm=%%g
  set dd=%%h
  set yy=%%i
)

if exist "\\networkdrive\Clients\SVN\%mm%-%dd%-%yy%" (
  rd /S /Q "\\networkdrive\Clients\SVN\%mm%-%dd%-%yy%"
)

xcopy "/home/username/myProj1Bak" "\\networkdrive\Clients\SVN\%mm%-%dd%-%yy%" /s /i
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...