#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 нет подкоманды «поиск».