时间:2021-05-19
前言
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=NOlocal_enable=YESwrite_enable=YESlocal_umask=022dirmessage_enable=YESxferlog_enable=YESconnect_from_port_20=YESxferlog_std_format=YESchroot_local_user=YESlisten=YESpam_service_name=vsftpduserlist_enable=YEStcp_wrappers=YESchroot_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 svnChanging password for user svn.passwd: all authentication tokens updated successfully.配置svn仓库
首先检查操作系统上面是否安装了subversion,一般centos操作系统都默认安装了此软件,如果没有安装使用如下命令快速安装
rpm -qa subversionyum -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/bashSVNDIR="/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 svndo 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 2doneHOST=localhostFTP_USERNAME=svnFTP_PASSWORD=Haiyuancd ${BACKDIR}/${DATE}ftp -i -n -v <<!open ${HOST}user ${FTP_USERNAME} ${FTP_PASSWORD}bincd ${OLDDATE}mdelete *cd ..rmdir ${OLDDATE}mkdir ${DATE}cd ${DATE}mput *bye以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
对于自动化运维,诸如备份恢复之类的,DBA经常需要将SQL语句封装到shell脚本。本文描述了在Linux环境下mysql数据库中,shell脚本下调用sql语
每一个合格的Linux运维人员都应该做到熟练或精通Shell脚本编程,因为Shell脚本语言差不多是所有编程语言里最简单的语言,如果Shell脚本不行,意味着运
Linux每次建立SVN版本库的过程都非常麻烦,如果将这些通过shell脚本来实现的话会简单很多,那么这个shell脚本要如何编译呢?下面小编就给大家介绍下
Linux在Shell脚本中使用函数实例详解Shell的函数Shell程序也支持函数。函数能完成一特定的功能,可以重复调用这个函数。函数格式如下:函数名(){函
每天定时备份数据库需要用到Linux的定时任务,利用Linux的crondtab命令。下面我们来看详细步骤:一、写好shell脚本mysqlbak.sh#!/b