




Мне нравится просто копировать весь каталог репо в место для резервной копии. Таким образом, если что-то случится, вы можете просто скопировать каталог обратно и сразу же быть готовым к работе.
Просто не забудьте сохранить разрешения, если это необходимо. Обычно это проблема только на машинах Linux.
это не совсем безопасно, если кто-то совершает фиксацию во время операции копирования - у меня такое случалось со мной, даже когда только 4 человека имели доступ к репо и использовали его нечасто. См. Ответ Дункана об использовании горячей копии.
Однако, если вы работаете полностью в одиночку, я полагаю, это безопасный способ резервного копирования репо? Я использую Subversion в своих личных проектах, и сейчас этим занимаюсь.
Вы можете использовать что-то вроде (Linux):
svnadmin dump repositorypath | gzip > backupname.svn.gz
Поскольку Windows не поддерживает GZip, это просто:
svnadmin dump repositorypath > backupname.svn
Я не знаю наверняка, но наверняка некоторые инструменты, такие как 7-zip, смогут сжимать данные из STDIN, что означает, что вы также можете использовать первый стиль в Windows.
Я просто смотрю на это сам, и один комментарий из документации svnbook.red-bean.com/nightly/en/… заключается в том, что вы получите очень большой вывод svnadmin dump, если вы не используете параметр --deltas.
И Windows поддерживает gzip, просто загрузите его с веб-страницы unxutils unxutils.sourceforge.net
Использование 7Zip: svnadmin dump repositorypath | "%ProgramFiles%-Zipz.exe" a backup.7z -sibackupname.svn При этом будет создан файл с именем «backup.7z», содержащий единственный файл «backupname.svn», выводимый из svnadmin dump.
У нас десятки репозиториев. Как поддержать их всех сразу?
В комментарии @ RobotCaleb ниже вы можете использовать svnadmin load для восстановления из резервной копии дампа.
@ Джош Стодола трепать: for project in *; do svnadmin dump ${project} | gzip > /backuppath/${project}.svn.gz; done;
как загрузить обратно svn в linux из резервной копии?
Еще пара примечаний: вы, возможно, захотите добавить --deltas, если хотите создать минимально возможный дамп. Мне нравится комментарий Мэтта о прокачке через 7z, мне нравится повышать компрессию с помощью переключателя -mx9. В командной строке 7z много возможностей. Проверьте ссылку в файле справки.
svnadmin dump repositorypath > backupname.svn Где эта ссылка сохранит резервную копию ?? Я имею ввиду путь ??
резервное копирование и восстановление: svnadmin dump C:\SVN\MyProject > C:\tmp\MyProject.bak - svnadmin load C:\SVN\MyProject < C:\tmp\MyProject.bak Если вы хотите восстановить в новый каталог, файл ./repo/format должен существовать. Я обнаружил, что проще всего просто создать новый репозиторий и восстановить его поверх него.
А что, если я не администратор svn?
Подробная ссылка в SVNBook: «Перенос данных репозитория с помощью svnadmin»
svnadmin hotcopy REPOS_PATH NEW_REPOS_PATH
This subcommand makes a full “hot” backup of your repository, including all hooks, configuration files, and, of course, database files.
На веб-сайте Subversion есть сценарий hotbackup.py, который очень удобен для автоматизации резервного копирования.
http://svn.apache.org/repos/asf/subversion/trunk/tools/backup/hot-backup.py.in
Я считаю, что это ссылка, которая работает на скрипт горячего резервирования: svn.apache.org/repos/asf/subversion/trunk/tools/backup/…
Если вы используете формат репозитория FSFS (по умолчанию), вы можете скопировать сам репозиторий, чтобы сделать резервную копию. В более старой системе BerkleyDB репозиторий не зависит от платформы, и вы, как правило, захотите использовать дамп svnadmin.
тема документации svnbook для резервного копирования рекомендует команду svnadmin hotcopy, поскольку она позаботится о таких проблемах, как используемые файлы и тому подобное.
Мы используем горячую копию svnadmin, например:
svnadmin hotcopy C:\svn\repo D:\backups\svn\repo
Согласно книга:
You can run this command at any time and make a safe copy of the repository, regardless of whether other processes are using the repository.
Вы, конечно, можете заархивировать (желательно 7-Zip) резервную копию. ИМХО Это самый простой из вариантов резервного копирования: в случае катастрофы мало что нужно сделать, кроме как разархивировать его обратно на место.
Я думаю, что дамп svnadmin предпочтительнее для резервного копирования по нескольким причинам. См. svn.haxx.se/users/archive-2005-05/0842.shtml
@daremon: Я предлагаю вам прочитать ответы на сообщения, на которые вы ссылаетесь, в частности, тот, в котором упоминается дамп svnadmin, не включает файлы управления репо.
закрытая гонка, но я голосую за svnadmin dump после прочтения ответов, предложенных Р. Бемроузом
Команда hotcopy не перезаписывает и не увеличивает размер создаваемых ею резервных копий. Поэтому, если вы планируете автоматизировать его в Windows с помощью планировщика задач, посмотрите следующий командный файл: cfchimp.com/wordpress/2008/05/…
Слово предупреждения. Не копируйте зеркальную копию репозитория, созданную с помощью svnsync, во время работы svnsync! Полученная копия может быть повреждена. Смотрите эту ветку для деталей: subversion.open.collab.net/ds/…
Я использую svnsync, который настраивает удаленный сервер как зеркало / ведомый. Две недели назад у нас был отказ сервера, и я смог довольно легко переключить подчиненное устройство в основное положение (нужно было только сбросить UUID в репозитории подчиненного устройства на исходный).
Еще одно преимущество заключается в том, что синхронизация может выполняться посредником, а не как задача на любом сервере. У меня был клиент для двух VPN, синхронизирующих репозиторий между ними.
так что он, очевидно, синхронизирует последние версии репо между двумя?
Несмотря на то, что это указано в названии, я не знаю, можно ли назвать это «синхронизацией». На самом деле это резервная копия, в которой ревизии на главном сервере будут перенесены на подчиненное устройство. Если вы внесете изменения в ведомое устройство, они либо нарушат «синхронизацию», либо приведут к безумию. Предполагаемое использование этого инструмента - создание внешних зеркал, доступных только для чтения, но он выполняет замечательную работу по созданию сервера резервного копирования.
Преимущество svnsync в том, что вы можете запускать его очень часто. Каждые десять минут или даже при каждой фиксации (с помощью хука). Преимущество этого заключается в том, что можно уменьшить потенциальную потерю данных, которая в противном случае была бы между последним резервным копированием и потерей реального репо.
как говорили другие, hot-backup.py от команды Subversion имеет некоторые приятные функции по сравнению с простым svnadmin hotcopy
Я запускаю запланированную задачу на скрипте python, который выполняет поиск всех моих репозиториев на машине и использует горячее резервное копирование для хранения горячих копий на несколько дней (параноик коррупции) и svnadmin svndump на удаленной машине. Реставрация от этого действительно проста - пока что.
Вот сценарий Perl, который:
Сценарий:
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`;
Для решения ежедневного и полного резервного копирования просто используйте Скрипты резервного копирования SVN здесь.
svnbackup в Google Code, консольном приложении .NET.
есть 2 основных метода резервного копирования svn-сервера, первый - это hotcopy, который создаст копию файлов вашего репозитория, основная проблема с этим подходом заключается в том, что он сохраняет данные о базовой файловой системе, поэтому у вас могут возникнуть некоторые трудности при попытке репостора такого рода резервное копирование на другом сервере svn или другой машине. есть еще один тип резервной копии, называемый дампом, эта резервная копия не сохраняет никакой информации о базовой файловой системе и ее пригодности для любого типа сервера SVN, основанного на tigiris.org subversion.
Что касается инструмента резервного копирования, вы можете использовать инструмент svnadmin (он может выполнять горячее копирование и дамп) из командной строки, эта консоль находится в том же каталоге, где находится ваш сервер svn, или вы можете использовать Google для инструментов резервного копирования svn.
Я рекомендую вам делать оба вида резервных копий и переносить их из офиса на свой почтовый ящик, сервис amazon s3, ftp или сервисы Azure, так у вас будет безопасная резервная копия без необходимости размещать сервер svn где-то вне твой офис.
Я скомпилировал шаги, которые я выполнил для создания резервной копии удаленного 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!
Единственная проблема с этим подходом состоит в том, что локальный репозиторий создается с приращением ревизии к фактической ревизии в удаленном репозитории. Как писал кто-то:
The svk miror command generates a commit in the just created repository. So all the commits created by the subsequent sync will have revision numbers incremented by one as compared to the remote public repository.
Но для меня это было нормально, поскольку мне время от времени требовалось только резервное копирование удаленного репозитория, и ничего больше.
Проверка:
Для проверки используйте клиент 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/ и сохраните его где-нибудь. Продолжайте делать это регулярно.
@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-Zipz.exe" a "\HOME\Development\Backups\SubVersion\%folder%\Jake.7z" -sibackupname.svn
Это пакетный файл, который у меня запущен, и он выполняет резервное копирование.
Обычно безопасно копировать папку репозитория, если svn-сервер остановлен. (источник: https://groups.google.com/forum/?fromgroups#!topic/visualsvn/i_55khUBrys%5B1-25%5D)
Так что, если вам разрешено остановить сервер, сделайте это и просто скопируйте репозиторий с помощью какого-нибудь скрипта или инструмента резервного копирования. Cobian Backup отлично подходит для этого, так как он может автоматически останавливать и запускать службы, а также может выполнять инкрементное резервное копирование, поэтому вы выполняете резервное копирование только тех частей репозитория, которые недавно изменились (полезно, если репозиторий большой и вы выполняете резервное копирование в удаленное место. ).
Пример:
Добавить задание резервного копирования:
Установите источник в папку репозитория (например, C:\Repositories\),
Добавить событие перед резервным копированием "STOP_SERVICE" VisualSVN,
Добавить событие после резервного копирования, "START_SERVICE" VisualSVN,
При необходимости установите другие параметры. Мы настроили инкрементные резервные копии, включая удаление старых, расписание резервного копирования, место назначения, сжатие, вкл. разделение архива и т. д.
Выгода!
Для размещенных репозиториев вы можете, начиная с версии 1.7 svn, использовать svnrdump, который аналогичен svnadmin dump для локальных репозиториев. Этот статья обеспечивает приятное пошаговое руководство, которое, по сути, сводится к следующему:
svnrdump dump /URL/to/remote/repository > myRepository.dump
После того, как вы скачали файл дампа, вы можете импортировать его локально.
svnadmin load /path/to/local/repository < myRepository.dump
или загрузите его на выбранный вами хост.
Вот инструмент Windows с графическим интерфейсом для создания дампов локальных и удаленных репозиториев Subversion:
https://falsinsoft-software.blogspot.com/p/svn-backup-tool.html
В описании инструмента сказано:
Этот простой инструмент позволяет сделать резервную копию дампа локального и удаленного репозитория Subversion. Программное обеспечение работает так же, как "svnadmin", но не является графическим интерфейсом над ним. Вместо этого используйте напрямую библиотеки Subversion, чтобы позволить создавать дамп в автономном режиме без каких-либо других дополнительных инструментов.
Надеюсь на эту помощь ...
Спасибо, что поделились этим, делает в точности так, как указано.
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
gzip -9 /path/to/reponame.dump
Реальный пример
gzip -9 /backups/testrepo.dump
1.3 Дамп SVN и Gzip-дамп с однострочником
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 резервное копирование и восстановление
VisualSVN Server для Windows включает встроенную функцию резервного копирования и проверки репозиториев SVN по расписанию: visualsvn.com/server/features/backup