CentOS 5.3 подрывная версия 1.4.2
Я ищу стратегию резервного копирования наших репозиториев подрывной деятельности. У нас около 30 репозиториев в таком каталоге:
repos/
/DEVS
/reps1
/reps2
/WEB
/reps3
/reps4
/reps5
TOOLS/
LIBS/
/reps6
/reps7
LOGS/
/reps8
Наше требование - делать ежедневные резервные копии в 12 часов утра.
Однако я не уверен насчет репозиториев Subversion для настройки rsync.
Нужно ли мне делать горячую копию или svn-дамп, синхронизировать и т. Д.? Или мне просто скопировать репозитории как есть?
Я никогда раньше не использовал rsync, поэтому мы будем делать резервные копии наших репозиториев на удаленный сервер. Нужен ли мне демон rsync, работающий на обеих машинах?
Может ли rsync рекурсивно создавать резервные копии всех репозиториев в репозиториях каталогов?
Большое спасибо за любой совет,
Вам необходимо убедиться, что репозиторий вообще не изменился (т.е. новые проверки) во время резервного копирования. Это можно организовать несколькими способами, но, вероятно, самый простой - использовать горячую копию для создания новой копии репозитория (процесс учитывает систему управления версиями / блокировкой подверсий, поэтому вы получаете согласованную копию репозитория на определенный момент времени, даже если люди активно его используют), а затем скопируйте эту копию на удаленный сайт с помощью rsync.
rsync поддерживает синхронизацию полных структур каталогов, и если удаленный конец доступен через SSH (или аналогичный), вам не нужно запускать rsync в режиме демона (его просто нужно установить, чтобы его можно было вызывать через ssh).
Необходимая вам команда rsync, вероятно, имеет вид:
rsync -a /path/to/hotcopy/copy user@remote.host:/path/to/backup/location
Это связано с remote.host
через SSH как user
, начинает rsync
процесс и организует передачу с ним, а затем закрывает его перед закрытием сеанса SSH. В -a
option (сокращение от --archive) включает множество опций, в том числе тот, который заставляет rsync работать рекурсивно во всей структуре каталогов. Вы можете добавить --compress
вариант тоже, так как, без сомнения, содержимое вашего репозитория будет хорошо сжиматься, экономя вам некоторую пропускную способность. Смотрите справочную страницу rsync для более подробной информации.
Мой любимый способ резервного копирования репозиториев svn - использовать svnsync. его инкрементный, поэтому вы не потеряете данные между резервными копиями в 12 часов утра. Его быстро (достаточно), поскольку он воспроизводит, фиксирует живое репо на резервное. Недостатком является то, что вам нужно настроить синхронизацию для каждого репо - вы не можете (в отличие от rsync) скопировать всю структуру каталогов. Он также не копирует ваши хуки и другие настройки, поэтому вам нужно скопировать их отдельно. Я запускаю его ежечасно для своих репозиториев, но я пробовал запускать его в ловушке post_commit (которая тоже работает), чтобы гарантировать постоянное резервное копирование всех коммитов.
Однако его легко настроить, создайте пустое репо для хранения каждой резервной копии и установите ловушку изменения revprop, чтобы разрешить изменения revprop (так что вы также можете синхронизировать их)
svnadmin create c:\backup_xyz
echo exit /b 0 > hooks/pre-revprop-change
затем инициализируйте синхронизацию (запустите svnsync на сервере резервного копирования), чтобы получить изменения:
svnsync init svn://svr/svn/remote_live_repo file:///c:/local_backup_repo
или если вы хотите нажать на удаленный сервер
svnsync init file:///c:/local_live_repo svn://svr/svn/remote_backup_repo
затем запустите синхронизацию
svnsync sync file:///c:/local_backup_repo
легко! Если произойдет сбой и вам придется перезапустить прерванную синхронизацию, просто удалите свойство, указывающее текущую версию синхронизации, и повторите попытку:
svn propdel svn:sync-lock --revprop -r 0 file:///c:/local_backup_repo
Ты можешь использовать svnadmin hotcopy
для создания резервных копий или rsync - но если вы используете rsync, вы должны остановить сервер репо на время выполнения резервного копирования.