gpt4 book ai didi

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

转载 作者:qq735679552 更新时间:2022-09-28 22:32:09 35 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章详解Linux运维CentOS系统SVN双备份Shell脚本由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

前言 。

SVN是Subversion的简称,是一个开放源代码的版本控制系统,采用了分支管理系统。说得简单一点SVN就是用于多个人共同开发同一个项目,共用资源的目的.

作为一个代码管理工具,备份操作显得尤为重要,这里采取这样的备份策略:在执行本地备份的同时,让Shell脚本自动上传数据到另一台FTP备份服务器中,这种异地备份策略成本比较小,无需存储,而且安全系统高,想到与双备份,本地和异地同时出现数据损坏的概率是低很多的.

备份策略说明 。

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

备份步骤 。

安装并配置vsftpd 。

使用yum直接安装即可.

?
1
yum -y install vsftpd

修改配置,由于要进行上传操作,所以要允许用户上传。为安全性考虑,不建议匿名用户操作.

修改配置后,将不必要的vsftpd.conf参数屏蔽,显示为:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[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/,这样更方便备份工作,以下脚本以此类推.

?
1
2
3
4
[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操作系统都默认安装了此软件,如果没有安装使用如下命令快速安装 。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
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脚本内容如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#!/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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我.

原文链接:http://blog.csdn.net/ll845876425/article/details/73011761 。

最后此篇关于详解Linux运维CentOS系统SVN双备份Shell脚本的文章就讲到这里了,如果你想了解更多关于详解Linux运维CentOS系统SVN双备份Shell脚本的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com