Восстановление резервных копий SVN из нескольких файлов

#svn

Вопрос:

У меня очень большой (~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

Ответ №1:

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

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

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

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

  • гораздо быстрее запустить и запустить резервную копию репозитория(сброс занимает несколько часов!)
  • меньше файлов дампа
  • меньше усилий по написанию сценариев
  • расширяется до резервных копий «для каждой фиксации»с помощью крючка после фиксации, так что вы не потеряете ни одной ревизии

Ответ №2:

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

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

Комментарии:

1. ну, проблема в том, что на самом деле у меня еще нет процесса — я пытаюсь начать с самого лучшего 🙂

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

Ответ №3:

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

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

::Этот скрипт создает резервную копию репозитория subversion.

::Сброс временного хранилища резервных копий

rmdir /S /Q C:SVNBACKUP
мкдир C:SVNBACKUP

::Инициируйте резервное копирование SVN. Используйте svadmin hotcopy
svnadmin дамп /svn/myProj1 > /главная/имя пользователя/myProj1Bak

для /f "токенов=2-4 разделителя=/" %%g в ('дата /t') сделать (
установить мм=%%g
 установите dd=%%h
 установите yy=%%i
)

если существует "\сетевой дискКлиентыSVN%мм%-%дд%-%гг%" (
rd /S /Q "\сетевой дискКлиентыSVN%мм%-%дд%-%гг%"
)

xcopy "/главная страница/имя пользователя/myProj1Bak" "\сетевой дискКлиентыSVN%мм%-%дд%-%гг%" /s /i

Ответ №4:

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

 svn look youngest [live_repo]
svn look youngest [copied_repo]
 

Комментарии:

1. Нет, «svnlook» — это утилита; для svn нет подкоманды «поиск».