Подтвердить что ты не робот

Стратегии резервного копирования хранилища SVN

Я новичок в SVN, и я хотел бы знать, какие методы доступны для резервного копирования репозиториев в среде Windows?

4b9b3361

Ответ 1

Вы можете использовать что-то вроде (Linux):

svnadmin dump repositorypath | gzip > backupname.svn.gz

Так как Windows не поддерживает GZip, это просто:

svnadmin dump repositorypath > backupname.svn

Ответ 2

Мы используем svnadmin hotcopy, например:

svnadmin hotcopy C:\svn\repo D:\backups\svn\repo

По книга:

Вы можете запустить эту команду в любое время и сделать безопасную копию репозитория, независимо от того, используют ли другие процессы репозиторий.

Вы можете, конечно, ZIP (желательно 7-Zip) резервной копии. ИМХО Это самый простой способ резервного копирования: в случае катастрофы мало что делать, кроме как разархивировать его обратно.

Ответ 4

Вот Perl script, который будет:

  • Резервное копирование репо
  • Скопируйте его на другой сервер через SCP
  • Получить резервную копию
  • Создайте тестовый репозиторий из резервной копии
  • Выполните тестовую проверку
  • Отправьте сообщение по электронной почте с любыми ошибками (через cron)

script:

my $svn_repo = "/var/svn";  
my $bkup_dir = "/home/backup_user/backups";
my $bkup_file = "my_backup-";
my $tmp_dir = "/home/backup_user/tmp";   
my $bkup_svr = "my.backup.com";
my $bkup_svr_login = "backup";

$bkup_file = $bkup_file . `date +%Y%m%d-%H%M`;
chomp $bkup_file;
my $youngest = `svnlook youngest $svn_repo`;
chomp $youngest;

my $dump_command = "svnadmin  -q dump $svn_repo > $bkup_dir/$bkup_file ";
print "\nDumping Subversion repo $svn_repo to $bkup_file...\n";
print `$dump_command`;
print "Backing up through revision $youngest... \n";
print "\nCompressing dump file...\n";
print `gzip -9 $bkup_dir/$bkup_file\n`;
chomp $bkup_file;
my $zipped_file = $bkup_dir . "/" . $bkup_file . ".gz";
print "\nCreated $zipped_file\n";
print `scp $zipped_file $bkup_svr_login\@$bkup_svr:/home/backup/`;
print "\n$bkup_file.gz transfered to $bkup_svr\n";

#Test Backup
print "\n---------------------------------------\n";
print "Testing Backup";
print "\n---------------------------------------\n";
print "Downloading $bkup_file.gz from $bkup_svr\n";
print `scp $bkup_svr_login\@$bkup_svr:/home/backup/$bkup_file.gz $tmp_dir/`;
print "Unzipping $bkup_file.gz\n";
print `gunzip $tmp_dir/$bkup_file.gz`;
print "Creating test repository\n";
print `svnadmin create $tmp_dir/test_repo`;
print "Loading repository\n";
print `svnadmin -q load $tmp_dir/test_repo < $tmp_dir/$bkup_file`;
print "Checking out repository\n";
print `svn -q co file://$tmp_dir/test_repo $tmp_dir/test_checkout`;
print "Cleaning up\n";
print `rm -f $tmp_dir/$bkup_file`;
print `rm -rf $tmp_dir/test_checkout`;
print `rm -rf $tmp_dir/test_repo`;

Script источник и более подробная информация о рациональности для этого типа резервного копирования.

Ответ 5

Я использую svnsync, который устанавливает удаленный сервер как зеркало/ведомый. У нас был сервер, спустившийся две недели назад, и я смог легко переключить подчиненную на основное место (только для reset UUID в подчиненном репозитории исходный файл).

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

Ответ 6

svnadmin hotcopy

svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH

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

Ответ 8

svnbackup в Google Code, консольном приложении .NET.

Ответ 9

В принципе безопасно копировать папку репозитория, если сервер svn остановлен. (источник: https://groups.google.com/forum/?fromgroups#!topic/visualsvn/i_55khUBrys%5B1-25%5D)

Итак, если вам разрешено останавливать сервер, сделайте это и просто скопируйте репозиторий либо с помощью некоторого script, либо с помощью средства резервного копирования. Cobian Backup подходит здесь, так как он может автоматически останавливать и запускать сервисы, и он может выполнять инкрементное резервное копирование, поэтому вы только создаете резервные копии частей репозитория, которые недавно изменились (полезно, если репозиторий большой, и вы выполняете резервное копирование до удаленного места).

Пример:

  • Установить Cobian Backup
  • Добавьте задачу резервного копирования:

    • Установите источник в папку репозитория (например, C:\Repositories\),

    • Добавить событие предварительного резервного копирования "STOP_SERVICE" VisualSVN,

    • Добавить событие после резервного копирования, "START_SERVICE" VisualSVN,

    • Задайте другие параметры по мере необходимости. Мы установили инкрементные резервные копии, включая удаление старых, резервное копирование, назначение, сжатие, вкл. архивирование и т.д.

  • Profit!

Ответ 10

Здесь инструмент GUI Windows для создания дампа локальных и удаленных репозиториев subversion:

https://falsinsoft-software.blogspot.com/p/svn-backup-tool.html

Описание инструмента говорит:

Этот простой инструмент позволяет сделать резервную копию дампа локального и удаленного репозитория подрывной деятельности. Программное обеспечение работает так же, как и "svnadmin", но не является интерфейсом GUI над ним. Вместо этого используйте непосредственно библиотеки subversion, чтобы позволить создавать дампы в автономном режиме без какого-либо другого дополнительного инструмента.

Надеюсь, что эта помощь...

Ответ 11

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

Просто убедитесь, что при необходимости сохраните разрешения. Обычно это проблема только для Linux-машин.

Ответ 12

Если вы используете формат репозитория FSFS (по умолчанию), вы можете скопировать репозиторий самостоятельно, чтобы сделать резервную копию. С более старой системой BerkleyDB репозиторий не является независимым от платформы, и вы обычно хотели бы использовать дамп svnadmin.

тема документации svnbook для резервного копирования рекомендует команду svnadmin hotcopy, так как она позаботится о таких проблемах, как используемые файлы и т.д.

Ответ 13

существует два основных способа резервного копирования svn-сервера: сначала hotcopy, который создаст копию файлов вашего репозитория, основная проблема с этим подходом заключается в том, что он сохраняет данные о базовой файловой системе, поэтому у вас могут быть некоторые трудности пытаясь восстановить этот вид резервной копии в другом виде сервера svn или другой машине. существует другой тип резервной копии, называемый дампом, эта резервная копия не сохранит никакой информации о базовой файловой системе и ее пригодности для любого типа SVN-сервера, основанного на подрывной деятельности tigiris.org.

о инструменте резервного копирования вы можете использовать инструмент svnadmin (он может делать hotcopy и dump) из командной строки, эта консоль находится в том же каталоге, где живет ваш svn-сервер, или вы можете использовать инструменты для резервного копирования svn./p >

Моя рекомендация заключается в том, что вы делаете оба типа резервных копий и выходите из офиса в свою учетную запись электронной почты, службу amazon s3, ftp или azure, так что у вас будет резервная копия безопасности без необходимости размещения сервера svn где-то из вашего офиса.

Ответ 14

Для размещенных репозиториев вы можете с тех пор, как svn версии 1.7 использовать svnrdump, что аналогично svnadmin dump для локальных репозиториев. Эта статья обеспечивает приятную прогулку, которая по существу сводится к:

svnrdump dump /URL/to/remote/repository > myRepository.dump

После того, как вы загрузили файл дампа, его можно импортировать локально

svnadmin load /path/to/local/repository < myRepository.dump

или загрузите его на хост по вашему выбору.

Ответ 16

@echo off
set hour=%time:~0,2%
if "%hour:~0,1%"==" " set hour=0%time:~1,1%
set folder=%date:~6,4%%date:~3,2%%date:~0,2%%hour%%time:~3,2%

echo Performing Backup
md "\\HOME\Development\Backups\SubVersion\%folder%"

svnadmin dump "C:\Users\Yakyb\Desktop\MainRepositary\Jake" | "C:\Program Files\7-Zip\7z.exe" a "\\HOME\Development\Backups\SubVersion\%folder%\Jake.7z" -sibackupname.svn

Это пакетный файл, который у меня работает, который выполняет мои резервные копии

Ответ 17

Я скомпилировал шаги, которые я выполнил, чтобы сделать резервную копию удаленного SVN репозиторий моего проекта.

install svk (http://svk.bestpractical.com/view/SVKWin32)

install svn (http://sourceforge.net/projects/win32svn/files/1.6.16/Setup-Subversion-1.6.16.msi/download)

svk mirror //local <remote repository URL>

svk sync //local

Это требует времени и говорит, что он извлекает журналы из репозитория. Он создает набор файлов внутри C:\Documents and Settings\nverma\.svk\local.

Чтобы обновить этот локальный репозиторий с последним набором изменений с удаленного, просто запустите предыдущую команду время от времени.

Теперь вы можете играть в своем локальном репозитории (/home/user/.svk/local в этом примере), как если бы это был обычный SVN-репозиторий!

Единственная проблема с этим подходом заключается в том, что локальный репозиторий создается с добавлением ревизии по фактической ревизии в удаленном репозитории. Как писал кто-то:

Команда svk miror генерирует фиксацию в только что созданном репозитории. Таким образом, все коммиты, созданные последующей синхронизацией, будут иметь номера версий, увеличенные на единицу, по сравнению с удаленным публичным репозиторием.

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

Проверка:

Чтобы проверить, используйте SVN-клиент с локальным репозиторием следующим образом:

svn checkout "file:///C:/Documents and Settings\nverma/.svk/local/"  <local-dir-path-to-checkout-onto>

Затем эта команда переходит к проверке последней версии из локального репозитория. В конце он говорит Checked out revision N. Этот N был больше, чем фактическая ревизия, найденная в удаленном репозитории (из-за проблемы, упомянутой выше).

Чтобы проверить, что svk также привезла всю историю, проверка SVN выполнялась с различными более старыми версиями с помощью -r с 2, 10, 50 и т.д. Затем были подтверждены файлы в <local-dir-path-to-checkout-onto> из этой версии.

В конце запишите каталог C:/Documents and Settings\nverma/.svk/local/ и сохраните zip где-нибудь. Продолжайте делать это регулярно.

Ответ 18

как говорили другие, hot-backup.py из команды Subversion имеет некоторые приятные функции поверх простого svnadmin hotcopy

Я запускаю запланированное задание на python script, которое содержит все мои репозитории на машине и использует hotbackup для хранения горячих копий на несколько дней (параноидальное повреждение) и svnadmin svndump на удаленной машине. Реставрация на самом деле очень проста - пока.

Ответ 19

1.1 Создание дампа из репозитория SVN (Subversion)

svnadmin dump /path/to/reponame > /path/to/reponame.dump

Реальный пример

svnadmin dump /var/www/svn/testrepo > /backups/testrepo.dump

1.2 Gzip Created Dump

gzip -9 /path/to/reponame.dump

Реальный пример

gzip -9 /backups/testrepo.dump

1.3 SVN Dump и Gzip Dump с одним слоем

svnadmin dump /path/to/reponame | gzip -9 > /path/to/reponame.dump.gz

Реальный пример

svnadmin dump /var/www/svn/testrepo |Â gzip -9 > /backups/testrepo.dump.gz

Резервное копирование (дамп) и восстановление (загрузка) репозитория SVN (Subversion) в Linux.
Ссылка: svn subversion backup andrestore