美文网首页Linux程序员Python 运维
Linux运维CentOS系统SVN双备份Shell脚本

Linux运维CentOS系统SVN双备份Shell脚本

作者: 海渊_haiyuan | 来源:发表于2017-06-11 01:36 被阅读177次

    Linux运维CentOS系统SVN双备份Shell脚本

    前言

    SVN是Subversion的简称,是一个开放源代码的版本控制系统,采用了分支管理系统。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的。
    作为一个代码管理工具,备份操作显得尤为重要,这里采取这样的备份策略:在执行本地备份的同时,让Shell脚本自动上传数据到另一台FTP备份服务器中,这种异地备份策略成本比较小,无需存储,而且安全系统高,想到与双备份,本地和异地同时出现数据损坏的概率是低很多的。

    备份策略说明

    使用CentOS 6系列系统,安装vsftpd,修改配置参数。此外vsftpd的备份目录可以做RAID1或RAID5。
    执行脚本将svn项目进行本地目录备份,然后将备份文件上传到FTP服务器上,已实现双备份。

    备份步骤

    安装并配置vsftpd

    使用yum直接安装即可。

    yum -y install vsftpd
    

    修改配置,由于要进行上传操作,所以要允许用户上传。为安全性考虑,不建议匿名用户操作。
    修改配置后,将不必要的vsftpd.conf参数屏蔽,显示为:

    [root@private ~]# grep -v "^#" /etc/vsftpd/vsftpd.conf | grep -v "^$"
    anonymous_enable=NO
    local_enable=YES
    write_enable=YES
    local_umask=022
    dirmessage_enable=YES
    xferlog_enable=YES
    connect_from_port_20=YES
    xferlog_std_format=YES
    chroot_local_user=YES
    listen=YES
    pam_service_name=vsftpd
    userlist_enable=YES
    tcp_wrappers=YES
    

    chroot_local_user=YES这条语句需要重点强调一下,其作用是对用户登录权限进行限制,即所有本地用户登录vsftpd时只能在自己的家目录下,这是基于安全的考虑,本实例脚本也会基于这点,要是使用本脚本在实际的生产环境,需要注意该点。

    创建ftp登录用户

    在备份服务器上创建备份用户,本次创建用户svn,并为其分配密码,还应该将其家目录更改为备份目录,本地备份目录为:/data/backup/svn-backup/,这样更方便备份工作,以下脚本以此类推。

    [root@private ~]# useradd -d /data/backup/svn-backup/ svn
    [root@private ~]# echo "svnpasswd" | passwd --stdin svn
    Changing password for user svn.
    passwd: all authentication tokens updated successfully.
    

    配置svn仓库

    首先检查操作系统上面是否安装了subversion,一般centos操作系统都默认安装了此软件,如果没有安装使用如下命令快速安装

    rpm -qa subversion
    yum -y install  subversion
    ##创建版本库
    svnadmin create /data/svn    //这里的文件目录自己随便设置  
    ##配置svnserve,上述版本库`/data/svn `建立后在文件夹下会生成conf文件夹,进入`/data/svn/conf`下面会有下面3个文件
    
    [root@private svn]# ls conf/
    authz  passwd  svnserve.conf 
    
    ##需要修改`svnserve.conf`修改以下几个部分:
    
    anon-access = read  
    auth-access = write  
    password-db = passwd  
    authz-db = authz  
    
    ##修改`passwd`文件为:
    
    [users]  
    username = password    //这里的username和password自己设置  
    
    ##配置文件`authz`最后加上以下两行(这两行解决了 SVN客户端解决authorization failed问题)
    
    [/]  
    * = rw    
    
    ##启动svnserve即可:
    svnserve -d -r /home/myrepos/  
    
    

    备份脚本

    本脚本设置轮询周期为30天一次,Shell会自动删除30天以前的文件。在vsftpd建立相应的备份用户svn脚本内容如下:

    #!/bin/bash
    SVNDIR="/data"
    SVNADMIN="/usr/bin/svnadmin"
    DATE=$(date +%Y-%m-%d)
    OLDDATE=$(date +%Y-%m-%d -d'30 days')
    BACKDIR="/data/backup/svn-backup"
    [ -d ${BACKDIR} ] || mkdir -p ${BACKDIR}
    LogFile=${BACKDIR}/svnbak.log
    [ -f ${LogFile} ] || touch ${LogFile}
    mkdir ${BACKDIR}/${DATE}
    
    for PROJECT in svn
    do
        cd $SVNDIR
        $SVNADMIN hotcopy $PROJECT $BACKDIR/$DATE/$PROJECT --clean-logs
        cd $BACKDIR/$DATE
        tar zcvf ${PROJECT}_svn_${DATE}.tar.gz $PROJECT > /dev/null
        rm -rf $PROJECT
        sleep 2
    done
    
    HOST=localhost
    FTP_USERNAME=svn
    FTP_PASSWORD=Haiyuan
    cd ${BACKDIR}/${DATE}
    
    ftp -i -n -v <<!
    open ${HOST}
    user ${FTP_USERNAME} ${FTP_PASSWORD}
    bin
    cd ${OLDDATE}
    mdelete *
    cd ..
    rmdir ${OLDDATE}
    mkdir ${DATE}
    cd ${DATE}
    mput *
    bye
    

    相关文章

      网友评论

        本文标题: Linux运维CentOS系统SVN双备份Shell脚本

        本文链接:https://www.haomeiwen.com/subject/bszcqxtx.html