В данный момент мы используем Visual SVN и делаем резервную копию всего каталога репозиториев для визуального svn. Это создает резервную копию всех данных для каждого репозитория внутри нашего механизма svn. Мне любопытно, смогу ли я восстановить эти файлы в случае чрезвычайной ситуации или бедствия? У кого-нибудь из вас есть опыт этой процедуры восстановления? Спасибо.
Видеть: http://www.visualsvn.com/support/topic/00012/
Это указывает на следующую документацию:
http://www.visualsvn.com/support/svnbook/reposadmin/maint/#svn.reposadmin.maint.backup
В нем описывается использование команд Subversion для создания резервной копии. Я надеюсь, что это то, что вы уже делаете, потому что прямая резервная копия каталога может привести к тому, что репозиторий будет непригоден для использования.
Вы должны иметь возможность использовать резервную копию из Subversion и использовать svnadmin dump
или svnadmin hotcopy
команда для восстановления полного репозитория. Однако, как и в случае с любой другой стратегией резервного копирования, вы должны протестировать восстановление самостоятельно, чтобы убедиться, что оно работает для вас.
Начиная с версии VisualSVN Server 3.6, сервер включает встроенное резервное копирование и восстановление репозитория по расписанию характерная черта. Кроме того, в версии 3.6 добавлена запланированная проверка репозиториев SVN.
Настройка запланированного резервного копирования репозитория и проверки для ваших репозиториев Subversion занимает всего несколько минут. Пошаговые инструкции см. В статье KB106: Начало работы с резервным копированием и восстановлением.
Если вы ищете одноразовую резервную копию, вы можете использовать Резервное копирование-SvnRepository Командлет PowerShell. Чтобы восстановить репозиторий, используйте Restore-SvnRepository. Эти командлеты резервного копирования доступны, начиная с версии 3.6.
Загрузите последнюю версию VisualSVN Server с главная страница загрузки.
Существует несколько методов резервного копирования репозиториев VisualSVN Server. Ознакомьтесь с кратким описанием ниже.
1. svnadmin hotcopy
инструмент
svnadmin hotcopy
позволяет сделать безопасную копию репозитория, независимо от того, используют ли репозиторий другие процессы. Вы можете написать собственный сценарий, который будет регулярно выполнять резервное копирование ваших репозиториев.
Вы можете прочитать следующую статью из книги SVN, чтобы узнать больше о резервном копировании репозиториев Subversion: http://www.visualsvn.com/support/svnbook/reposadmin/maint/#svn.reposadmin.maint.backup
2. svnsync
инструмент
Это метод инкрементного резервного копирования. Метод инкрементного резервного копирования позволяет копировать только ту часть данных репозитория, которая изменилась с момента предыдущего резервного копирования. Вы можете настроить этот инструмент для работы в качестве «главного» и «подчиненного» и автоматически дублировать любые коммиты в его репозитории.
См. Статью "svnsync" для получения дополнительных сведений: http://www.visualsvn.com/support/svnbook/ref/svnsync/
3. Резервное копирование Windows Server. Вы можете использовать Windows Server Backup для резервного копирования репозиториев Subversion. Это позволяет вам планировать резервное копирование на общий сетевой ресурс, выделенный том резервного копирования, записываемый носитель. Например, wbadmin
Инструмент командной строки позволяет безопасно создавать резервные копии ваших репозиториев. Эта простая команда выполняет одноразовую резервную копию C:\foo\bar
к X:\
объем:
wbadmin start backup –backupTarget:x: -include:c\foo\bar -vsscopy
(Чтобы установить Windows Server Backup, запустите ocsetup WindowsServerBackup
в командной строке с повышенными привилегиями).
Вы можете настроить резервное копирование разными способами:
wbadmin
инструмент командной строки,Необязательно останавливать службу сервера при запуске резервного копирования, потому что Серверная часть репозитория FSFS всегда в постоянном состоянии.
Вот общие советы по восстановлению резервных копий Windows Server:
Восстановите резервные копии в пустой каталог, чтобы убедиться, что восстановленные файлы репозитория не смешиваются с файлами сломанного. После восстановления репозитория вы можете удалить поврежденный репозиторий, а затем заменить его восстановленным.
Остановить-запустить цикл сервера после восстановления репозитория из резервной копии.
Если ваши клиенты получат ошибки после восстановления репозитория, запустите svnadmin recover
против этого. Команда завершается мгновенно и снова делает репозиторий доступным.
За исключением репозиториев, вы должны сделать резервную копию следующей информации:
Файлы аутентификации и авторизации, которые хранятся в корне репозиториев ('C: \ Репозитории' по умолчанию). В зависимости от ваших настроек должны быть следующие файлы: 'authz', 'authz-windows' и 'htpasswd'.
Папка "% VISUALSVN_SERVER% \ certs \", в которой хранится информация о ваших SSL-сертификатах.
Папка "% VISUALSVN_SERVER% \ conf \", в которой хранятся файлы конфигурации вашего VisualSVN Server.
Раздел реестра «HKEY_LOCAL_MACHINE \ SOFTWARE \ VisualSVN \ VisualSVN Server», в котором хранится другая часть конфигурации сервера.
Я делаю это:
svnadmin dump "c:/Repositories/svnroot" > c:/backup/svnroot_%date%.dump
Также вы можете заархивировать его, чтобы сэкономить место. Я использовал тот же метод, когда переместил SVN с Linux на VisualSVN, поэтому эта резервная копия работает должным образом.
Другой вариант - горячая копия. Он делает резервную копию всего вашего репозитория. Занимает больше места на диске, но очень легко запускается и с его помощью очень легко восстанавливать репозиторий.
Самый простой и лучший способ сделать резервную копию репозитория SVN - это использовать svnsync. Это инкрементный инструмент, который воспроизводит любые коммиты в репозиторий резервных копий. Его легко начать - см. это сообщение в блоге - и это быстро, поскольку он только отправляет изменения. Вам нужно будет настроить хук post-rev-prop-change, чтобы поймать «крайний случай», когда кто-то обновляет исторический revprop, но в противном случае вы можете запускать его ежечасно (как я), чтобы постоянно сохранять резервные копии. вы даже можете запустить его в ловушке после фиксации, если вы действительно параноик в отношении резервного копирования данных!
Если ваше живое репо умирает, вы можете просто «переместить svn» в резервное репо, пока у вас снова не будет запущено живое репо (хотя, будьте осторожны, если вы что-то записываете в резервную копию, пока live не работает, если вы не запустите svnsync, чтобы получить те изменения, примененные к живому репо, что довольно очевидно, если подумать).
Таким образом, вы получаете непрерывное резервное копирование и время простоя, измеряемое секундами, с минимальным использованием ресурсов. Нет ничего лучше резервного копирования!
VisualSVN - это продукт Windows, поэтому он будет работать в Windows. Если утилита резервного копирования может использовать теневое копирование тома для создания резервной копии, тогда это должно создать внутренне непротиворечивую резервную копию. Встроенное NTBACKUP или стороннее программное обеспечение, такое как Symantec Backup Exec, или инструменты резервного копирования на диск, встроенные в Windows Server 2008, могут использовать теневое копирование томов.
Для тех, кто просто хочет сделать резервную копию всех репозиториев при установке Visual SVN по умолчанию в системе Windows
Я использую следующий сценарий cmd - он выгружает все подпапки корня репозитория в путь к резервной копии и 7-молния их.
@echo off
set svnAdminPath="C:\Program Files (x86)\VisualSVN Server\bin"
set sevenZipPath="C:\Program Files\7-Zip"
set repositoryRoot=d:\Repositories
set backupPath=c:\Source\Backup\SVN
set dateStamp=%DATE:~-4%-%DATE:~4,2%-%DATE:~7,2%
for /f %%f in ('dir /b /AD %%repositoryRoot%%') do (
call:dumpRepository %%f
call:zipLastDump
)
goto:eof
:dumpRepository
cd /d %svnAdminPath%
set repoPath=%repositoryRoot%/%~1
set dumpFile=%~1_%dateStamp%
echo.-------------------
echo.Dumping %~1 to %dumpFile%.dump
echo.-------------------
svnadmin dump "%repoPath%" > "%backupPath%\%dumpFile%.dump"
exit /b
:zipLastDump
cd /d %sevenZipPath%
set zipFile="%backupPath%\%dumpFile%.7z"
echo.-------------------
echo.Zipping %dumpFile%.dump to %zipFile%
echo.-------------------
7z a "%zipFile%" "%backupPath%\%dumpFile%.dump"
del "%backupPath%\%dumpFile%.dump"
exit /b