Автоматическое резервное копирование хранилища Subversion - PullRequest
8 голосов
/ 02 марта 2010

Как мне сделать резервную копию моего Subversion Repository ночью? У меня есть сетевой диск, на который я хотел бы выгрузить хранилище на ночной основе.

Ответы [ 3 ]

11 голосов
/ 02 марта 2010

Ознакомьтесь с главой Обслуживание репозитория в Книге о том, как вытащить дамп из хранилища. Затем используйте синхронизированную службу (например, at или cron, или очень хороший планировщик задач в ОС Windows, зависит от системы вашего сервера), чтобы выполнять дамп ночью. Готово.

6 голосов
/ 03 марта 2010

В книге SVN есть раздел Резервное копирование репозитория .

Команда svnadmin hotcopy позволяет безопасно создавать резервные копии действующего хранилища.

Команда svnsync является еще одной возможностью.

1 голос
/ 29 мая 2013

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

Установите правильные настройки для

WORKDIR=path to where this script resists

SVN_REPO_LOCATION=path to where the repository resists on hd

BACKUPDIR=path to where the backup should goes to

SVN_LOACTION=root location which you use in your svn command

и добавьте скрипт в cronjob, вот и все.

#!/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
...