Debian10: SVN数据备份

数据是公司的核心资源,重之又重,数据备份是为灾难上的保险。现有主服务器和备用服务器的情况下,备份思路和要求如下:
1. 主服务器和备用服务器的svn数据每天同步,以便在主服务器故障时能以最快速度切换至备用服务器;
2. 主服务器每周对svn数据进行一次全备份。

一、同步svn数据
  备用服务器通过nfs服务将主服务器的svn仓库目录挂载至文件系统以方便操作。然后编写脚本程序,使用crontab创建计划任务。这里需要注意两点:一是使用chmod +x svn_sync.sh命令使脚程序可执行;二是以root用户登陆创建计划任务。脚本程序检测主服务器SVN仓库的最新版本和备用服务器的最新版本,若主服务器的仓库版本更新,则通过增量备份方式生成.svn文件,然后将其导入备用服务器,以此完成备用服务器的仓库同步。
  脚本程序如下:

#!/bin/bash

#仓库列表
repo_list[0]="project"
repo_list[1]="office"
repo_list[2]="public"

#开始同步
date >svn_sync.log
echo "repo. sync start:" >>svn_sync.log

#检测主服务仓库目录是否加载
if [ ! -d /nfs/nas1_svn/repo ]; then
    mount -t nfs 192.168.1.224:/disk1/svn /nfs/nas1_svn
fi

#同步仓库
for repo in ${repo_list[@]}; do
    if [ -d /nfs/nas1_svn/repo/$repo ]; then
        date >> svn_sync.log
        echo "sync $repo" >>svn_sync.log
        svn_rev=$(svnlook youngest /nfs/nas1_svn/repo/$repo)
        bak_rev=$(svnlook youngest /disk1/svn/repo/$repo)

        if [ $svn_rev -ne $bak_rev ]; then
            bak_rev=$[$bak_rev+1]
            echo "sync rev:$bak_rev to $svn_rev"
            svnadmin dump --incremental -r $bak_rev:$svn_rev /nfs/nas1_svn/repo/$repo > /disk1/svn/${repo}.svn
            svnadmin load /disk1/svn/repo/$repo < /disk1/svn/${repo}.svn
            rm /disk1/svn/${repo}.svn
        fi
        echo "sync $repo finish!" >>svn_sync.log
    fi
done

cp -f /nfs/nas1_svn/dav_svn.passwd /disk1/svn/
cp -f /nfs/nas1_svn/dav_svn.authz /disk1/svn/

date >> svn_sync.log
echo "repo. sync finish!" >> svn_sync.log

二、全备份svn数据
  操作同上,脚本程序如下:

#!/bin/bash

#仓库列表
repo_list[0]="project"
repo_list[1]="office"
repo_list[2]="public"

#检测主服务仓库目录是否加载
if [ ! -d /nfs/nas1_svn/repo ]; then
    mount -t nfs 192.168.1.224:/disk1/svn /nfs/nas1_svn
fi

#备份仓库
for repo in ${repo_list[@]}; do
if [ -d /nfs/nas1_svn/repo/$repo ]; then
    mv /disk0/svn_backup/${repo}.svn /disk0/svn_backup/_${repo}.svn
    svnadmin dump /disk1/svn/repo/$repo > /disk0/svn_backup/${repo}.svn
    rm /disk0/svn_backup/_${repo}.svn
fi
done

cp -f /disk1/svn/dav_svn.passwd /disk0/svn_backup/
cp -f /disk1/svn/dav_svn.authz /disk0/svn_backup/

 

你可能感兴趣的:(NAS,SVN,Linux,svn,备份)