Содержание
Резервное копирование и восстановление Subversion (SVN) репозиториев
— lonebuddha 2024/02/23 12:34
Разберем как делать резервные копии имеющихся Subversion (SVN) репозиториев в FreeBSD среде.
Резервное копирование репозитория
Создаем резервную копию указанного репозитория:
svnadmin dump /path/to/repository > svnexport.dump
Создаем резервную копию указанного репозитория и сжимаем его:
svnadmin dump /path/to/repository | gzip > svnexport.dump.gz
Резервное копирование все репозиториев (bash скриптом)
Для того чтобы автоматизировать процесс резервирования всех имеющихся репозиториев, создадим скрипт, который будет выполнять эту задачу. Скрипт с коментариями, разобратся в нем не составит труда:
#!/bin/sh
# 23/02/2024 LoneBuddha (http://winogradov.ru/)
# Резервное копирование репозиториев (SVN)
PATH_REPO="/mnt/svn/"
LOCAL_DIR="/mnt/svn_dump/"
EXPIRATION_DAYS=1
DATE=$(date +"%y_%m_%d")
# Создаем каталог для размещения бекапо если он не создан
if ! [ -d $LOCAL_DIR ]; then
mkdir $LOCAL_DIR
fi
# Создаем каталог с текущей датой
mkdir -p $LOCAL_DIR/$DATE
# Создание дампа всех репозиториев
cd $PATH_REPO
for REPO in *; do
test -d "$REPO" && svnadmin dump $REPO | gzip > $LOCAL_DIR/$DATE/$REPO.dump.gz
done
# Удаление старых резервных копий
find $LOCAL_DIR* -mtime +${EXPIRATION_DAYS} -exec rm {} \;
# Удаление пустых каталогов
find $LOCAL_DIR* -type d -empty -exec rmdir {} \;
Восстановление репозитория из резервной копии
Восстанавливаем репозиторий из резервной копии (Перед восстановлением, нужно убедится что восстанавливаемый репозиторий существует, если нет, то сперва нужно его создать, а затем выполнять восстановление):
svnadmin load /path/to/repository < svnexport.dump
Восстанавливаем репозиторий из сжатого файла резервной копии (Перед восстановлением, нужно убедится что восстанавливаемый репозиторий существует, если нет, то сперва нужно его создать, а затем выполнять восстановление):
gunzip -c svnexport.dump.gz | svnadmin load /path/to/repository
