Автоматическое резервное копирование репозиториев SVN

#svn #backup #maintenance

#svn #резервное копирование #обслуживание

Вопрос:

Я новичок и хочу администрировать SVN-сервер. У нас много репозиториев SVN на одном сервере, и мы хотим, чтобы все они создавались отдельно (например, <repo_name>_last revision): Полное резервное копирование == Раз в неделю, инкрементное == Каждую ночь

Также, как только резервное копирование завершено или не завершено (каждый день и каждую неделю), мы хотим, чтобы было запущено уведомление по электронной почте.

Ниже приведен сценарий оболочки, который я нашел, но, похоже, он ПРЕДНАЗНАЧЕН ТОЛЬКО для одного репозитория, и для отправки уведомления о состоянии не используется операция «MAILTO».

При первом запуске выполняется полное резервное копирование, при каждом последующем запуске выполняется только увеличение по сравнению с последними фиксациями во время последнего резервного копирования.

 #!/bin/bash
WORKDIR=/home/user/svnbackup
SVN_REPO_LOCATION=/opt/svn
BACKUPDIR=./backup
SVN_LOACTION=https://mysvn.server.com/svn

cd $WORKDIR;
CURRENT_VERSION=`svn info $SVN_LOACTION | grep Revision | awk '{print $2}'`
LAST_VERSION=`cat svn.version 2>/dev/null`
mkdir -p $BACKUPDIR;
if [ "$LAST_VERSION" = "" ]
then
        echo fullbackup;
        svnadmin dump -q $SVN_REPO_LOCATION > $BACKUPDIR/svn_backup_$CURRENT_VERSION.dump;
        echo $CURRENT_VERSION > svn.version;
else
        if [ "$LAST_VERSION" == "$CURRENT_VERSION" ]
        then
                echo backup not necessary;
        else
                echo incremental;
                svnadmin dump -q $SVN_REPO_LOCATION -r$LAST_VERSION:$CURRENT_VERSION --incremental  > $BACKUPDIR/svn_backup_$CURRENT_VERSION.dump;
                echo $CURRENT_VERSION > svn.version;
        fi
fi
 

Комментарии:

1. В чем ваш вопрос?

2. @uzsolt Мой вопрос в том, что я хочу создать сценарий оболочки и запланировать его как задание cron для автоматического создания дампа всех репозиториев (по отдельности) с главного SVN-сервера в расположение NAS.

3. И что не так с вашим скриптом?

4. Мой скрипт только читает: SVN_LOACTION=mysvn.server.com/svn . Единый репозиторий. Поэтому я хочу использовать для всего репозитория.

5. Может быть, цикл for? Или я не понимаю вашей проблемы.