Какие существуют способы резервного копирования репозиториев для Windows VisualSVN?

15

В данный момент мы используем Visual SVN и создаем резервную копию всего каталога репозиториев для Visual SVN. Это создает резервные копии всех данных для каждого хранилища в нашем движке SVN. Мне интересно, смогу ли я восстановить эти файлы в случае чрезвычайной ситуации или стихийного бедствия? У кого-нибудь из вас есть опыт этой процедуры восстановления? Благодарю.

Geo
источник
1
Если вы на самом деле не проверяли восстановление, то вы не можете быть уверены в своей резервной копии.
Майкл Хэмптон

Ответы:

11

Смотрите: 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для восстановления полного хранилища. Однако, как и в случае с любой стратегией резервного копирования, вы должны самостоятельно проверить восстановление, чтобы убедиться, что оно работает для вас.

DCNYAM
источник
8

Начиная с версии VisualSVN Server 3.6, сервер имеет встроенную функцию резервного копирования и восстановления по расписанию . Кроме того, в версии 3.6 добавлена ​​запланированная проверка SVN-репозиториев.

Настройка резервного копирования и проверки по расписанию для ваших репозиториев Subversion занимает всего несколько минут. Пошаговые инструкции см. В статье KB106: Начало работы с резервным копированием и восстановлением .

Если вы ищете одноразовую резервную копию, вы можете использовать командлет Backup-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в командной строке с повышенными правами).

Вы можете настроить резервное копирование различными способами:

При запуске резервного копирования не требуется останавливать службу сервера, поскольку серверная часть репозитория FSFS всегда находится в согласованном состоянии .

Вот общие советы по восстановлению резервных копий Windows Server:

  1. Восстановите резервные копии в пустой каталог, чтобы убедиться, что восстановленные файлы репозитория не будут смешиваться с файлами поврежденного. После восстановления репозитория вы можете удалить поврежденный репозиторий, а затем заменить его на восстановленный.

  2. Стоп-запуск цикла сервера после восстановления хранилища из резервной копии.

  3. Если ваши клиенты получают ошибки после восстановления хранилища, запустите svnadmin recoverих. Команда завершается мгновенно и делает хранилище снова доступным.


За исключением репозиториев, вы должны сделать резервную копию следующей информации:

  1. Файлы аутентификации и авторизации, которые хранятся в корне хранилища ( по умолчанию «C: \ Repositories» ). В зависимости от ваших настроек должны быть следующие файлы: «authz» , «authz-windows» и «htpasswd» .

  2. Папка «% VISUALSVN_SERVER% \ certs \», в которой хранится информация о ваших SSL-сертификатах.

  3. Папка «% VISUALSVN_SERVER% \ conf \», в которой хранятся файлы конфигурации вашего сервера VisualSVN.

  4. Раздел реестра «HKEY_LOCAL_MACHINE \ SOFTWARE \ VisualSVN \ VisualSVN Server», в котором хранится другая часть конфигурации сервера.

bahrep
источник
1
Для последнего варианта вам нужно будет остановить службу svn, в противном случае вы рискуете создать резервную копию репо, где будет активная фиксация, которая сделает вашу резервную копию поврежденной.
Энди
5

Я делаю это путем:

svnadmin dump "c:/Repositories/svnroot" > c:/backup/svnroot_%date%.dump

Также вы можете RAR / ZIP, чтобы сэкономить место. Я использовал тот же метод, когда переместил SVN из Linux в VisualSVN, поэтому эта резервная копия работает как надо.

Alex
источник
3

Самый простой и лучший способ сделать резервные копии репозитория SVN - это использовать svnsync . Это инкрементный инструмент, который воспроизводит любые коммиты в резервное хранилище. Его легко начать - см. Этот пост в блоге - и это быстро, поскольку он только отправляет изменения. Вам нужно будет установить хук post-rev-prop-change, чтобы поймать «крайний случай», когда кто-то обновляет исторический revprop, но в противном случае вы можете запускать его ежечасно (как я), чтобы постоянно сохранять резервные копии. Вы даже можете запустить его в хуке post-commit, если вы действительно параноидально относитесь к резервному копированию данных!

Если ваше живое репо умирает, вы можете просто «переместить svn» в резервное хранилище, пока ваше живое хранилище не запустится снова (хотя, будьте осторожны, если вы что-то записываете в резервную копию, пока живое не работает, если вы не запустите svnsync, чтобы получить их. изменения, примененные к живому репо, что довольно очевидно, когда вы об этом думаете).

Таким образом, у вас есть непрерывные резервные копии, и время простоя измеряется в секундах, используя его с минимальным использованием ресурсов. Резервные копии не становятся намного лучше, чем это!

gbjbaanb
источник
3

Другой вариант - горячая копия . Это делает резервную копию всего вашего хранилища. Занимает больше места на диске, но очень прост в запуске и очень легко восстанавливает репозиторий, используя это.

swolff1978
источник
2

VisualSVN - это продукт для Windows, поэтому он будет работать в Windows. Если утилита резервного копирования может использовать теневое копирование тома для создания резервной копии, то это должно создать внутренне согласованную резервную копию. Встроенное программное обеспечение NTBACKUP или стороннее программное обеспечение, такое как Symantec Backup Exec, или средства резервного копирования на основе дисков, встроенные в Windows Server 2008, способны использовать Volume Shadow Copy.

Тим Лонг
источник
Это не будет с точки зрения транзакций. Вам нужно заставить сервер делать резервное копирование тем или иным способом, как и для любой базы данных.
Дэвид Хеффернан
В случае SQL Server резервные копии на основе VSS фактически безопасны с точки зрения транзакций. В случае сервера VisualSVN можно надеяться, что в качестве сервера на базе Windows он будет работать правильно при резервном копировании одним из стандартных решений резервного копирования Windows, как это делает SQL Server. У меня нет доказательств, чтобы предположить, делает ли это или нет.
Тим Лонг
Я в этом сомневаюсь. VisualSVN просто упакован в SVN. Я никогда не видел признаков того, что у него есть резервная копия, которая интегрируется с VSS.
Дэвид Хеффернан
0

Для тех, кто просто хочет сделать резервную копию всех репозиториев при установке Visual SVN по умолчанию в системе Windows

Я использую следующий сценарий cmd - он сбрасывает все подпапки корня хранилища в путь резервной копии и 7-zips их.

@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
JDizzle
источник