====== Резервное копирование и восстановление Subversion (SVN) репозиториев ====== --- //[[winogradov@list.ru|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 {{tag>SVN FreeBSD}}