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

 更新时间:2017年06月12日 09:25:07   作者:海渊_haiyuan  
本篇文章主要介绍了详解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安装jdk并设置环境变量的方法教程(看这一篇够了)

    linux安装jdk并设置环境变量的方法教程(看这一篇够了)

    这篇文章主要介绍了linux安装jdk并设置环境变量的相关资料,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-02-02
  • Linux服务使用宝塔面板搭建网站并发布公网访问

    Linux服务使用宝塔面板搭建网站并发布公网访问

    宝塔面板作为简单好用的服务器运维管理面板,它支持Linux/Windows系统,本文我们将演示使用宝塔面板快速简单搭建本地web网站,并做内网穿透,实现不在同个局域网下的用户也可以访问到本地web站点,无需公网IP,也不用设置路由器,需要的朋友可以参考下
    2023-08-08
  • linux系统安装zookeeper 服务的方法

    linux系统安装zookeeper 服务的方法

    这篇文章主要介绍了linux 系统安装zookeeper 服务的方法,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2018-11-11
  • Linux cal命令的使用

    Linux cal命令的使用

    这篇文章主要介绍了Linux cal命令的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • CentOS 6.3编译安装LAMP环境笔记

    CentOS 6.3编译安装LAMP环境笔记

    这篇文章主要介绍了CentOS 6.3编译安装LAMP环境笔记,本文从系统安装讲解,涵盖了系统、LAMP环境的安装和配置等内容,需要的朋友可以参考下
    2014-09-09
  • 详解Linux下crontab的使用与注意事项

    详解Linux下crontab的使用与注意事项

    这篇文章主要介绍了详解Linux下crontab的使用与注意事项,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • centos7.6批量增加修改删除虚拟网卡操作介绍

    centos7.6批量增加修改删除虚拟网卡操作介绍

    大家好,本篇文章主要讲的是centos7.6批量增加修改删除虚拟网卡操作介绍,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下
    2021-12-12
  • Linux NFS服务器的安装与配置方法(图文详解)

    Linux NFS服务器的安装与配置方法(图文详解)

    这篇文章主要介绍了Linux NFS服务器的安装与配置方法(图文详解),需要的朋友可以参考下
    2015-11-11
  • Django上线部署之Apache的方法

    Django上线部署之Apache的方法

    这篇文章主要介绍了Django上线部署之Apache的相关知识,非常不错,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-08-08
  • 在APACHE环境下配置下载服务器的注意事项

    在APACHE环境下配置下载服务器的注意事项

    这篇文章主要介绍了在APACHE环境下配置下载服务器的注意事项,需要的朋友可以参考下
    2016-08-08

最新评论