代码之家  ›  专栏  ›  技术社区  ›  Achilles

Subversion存储库的自动备份

  •  8
  • Achilles  · 技术社区  · 15 年前

    如何每晚备份Subversion存储库?我有一个网络驱动器,我想每晚将存储库转储到其中。

    3 回复  |  直到 12 年前
        1
  •  11
  •   Michael Hackner    15 年前

    查看 Repository Maintenance 本书中关于如何从存储库中提取转储的章节。然后使用定时服务( at cron 例如,或者windows操作系统中非常好的任务调度程序,取决于服务器的系统)来每晚执行转储。完成。

        2
  •  6
  •   Craig McQueen Dr. Watson    15 年前

    SVN的书有一个关于 Repository Backup .

    这个 svnadmin hotcopy 命令允许您安全地备份实时存储库。

    这个 svnsync 命令是另一种可能性。

        3
  •  1
  •   beagle    12 年前

    我只是写了一个简短的脚本来完成这项工作。 第一次运行会执行完全备份,以后每次运行只会在上次备份期间的最后一次提交上执行增量操作。 备份文件将获得跟踪过程的最新修订号。

    为设置正确的设置

    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