SVN repository backup shell script
Після створення SVN репозиторіїї необхідно подбати про створення резервних копій цієї репозиторії, з подальшим бекапуванням (копіюванням) даних на інші носії інофрмації.
Найзручнішим способом створення дампу репозиторії - це є використання svnadmin утілити яка вхидить в дистрибутив Subversion. Важливим моментом є те що зберижеться все дерево операцій, які відбувались у репозиторії(всі commits, merge, і тд). Топто репозиторія буде відтворена точно один в один до попереднього стану.
Для створеня дампу репозиторії я пропоную наступний скрипт. Він компресує дамп, і створює результуючий файл використовуючи наступну схему для імені файлу:
ПРОЕКТ_svn_rep_ДАТА_revНОМЕРМОЛОДШОГОREVISION.dump.bz
ProjectA_svn_rep_20050626_rev10.dump.bz
ProjectA_svn_rep_20050627_rev11.dump.bz
Ось як виглядає цей простенький файл. Ви також можете скачати його тут.
#!/bin/sh
PROJECT=ProjectA
REP_HOME=/home/svn/
BACKUP=/home/svn/bak
SVN="$REP_HOME$PROJECT"
echo "$(date) $PROJECT SVN dump started."
/usr/local/bin/svnadmin dump ${SVN} | /usr/bin/bzip2 > ${BACKUP}/${PROJECT}_svn_rep_`date +%Y%m%d`_rev`/usr/local/bin/svnlook youngest ${SVN}`.dump.bz
echo "$(date) $PROJECT SVN dump completed."
Далі потрібно надаштувати cron, або інший scheduler для автоматичного виконання цього скрипта. Ясно що найкращий час для створення дампу репозиторію є ніч. Хоча це може бути і ранок, коли всі програмісти ще сплять.
crontab -e
Скрипт автоматично буде виконуватись кожного дня о 3-ій годині ночі.
0 3 * * * /home/svn/bin/ProjectA_rep_backup >> /home/svn/bin/ProjectA_rep_backup.log
Хочу звернути увагу на перенаправлення виводу у лог файл ProjectA_rep_backup.log. Це дасть змогу відслідкувати помилки які можуть трапитись під час виконання бекапу репозиторії.
Для того щоб подивитись список задач у cron-i достатньо виконати наступну команду
crontab -l