Создадим локальный репозиторий с именем «my_local_repo».
1 |
$ svnadmin create my_local_repo |
Разрешим делать с локальным репозиторием что угодно. В директории
1 2 3 |
$ cd my_local_repo $ echo "#!/bin/sh" > hooks/pre-revprop-change $ chmod 755 hooks/pre-revprop-change |
Инициализируем локальную копию. Возможно придётся ввести логин и пароль.
1 |
$ svnsync init file:///path/to/my_local_repo http://from.server/from_repo |
запускаем в интерактивном режиме для ввода логина и пароля и их сохранения, а также первой загрузки данных из удалённого репозитория.
1 |
svnsync sync file:///path/to/my_local_repo |
Напишем скрипт для cron’а.
backup_svn_script.sh:
1 2 3 |
#!/bin/bash svnsync --non-interactive sync file:///path/to/my_local_repo tar -C /path/to/ -czf /path/to/backup/$(date +"svn_%Y_%m_%d_%H_%M_%S").tar.gz my_local_repo |
Он будет создавать файлы вида «svn_2012_09_07_01_34_01.tar.gz» в вашей директории с бэкапами.
Для добавления скрипта в крон, нужно запустить:
1 |
$ crontab -e |
и, например для сохранения бэкапа в 4:00 каждый день, добавить следующую строчку:
1 |
0 4 * * * /path/to/backup_svn_script.sh |
Этот метод очень неэффективный в отношении дискового пространства, но очень простой и быстро реализуемый. Подойдёт для минимальной защиты от сбоев основного svn сервера.
Источники:
using svnsync
installing subversion server in ubuntu