博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SVN自动化备份、恢复脚本(上)
阅读量:6245 次
发布时间:2019-06-22

本文共 3026 字,大约阅读时间需要 10 分钟。

hot3.png

#!/bin/bash#svn服务器地址如下,本机的ip地址为192.168.4.248IP152=192.168.3.152Password=xxxx2015fewdaysago=`date -d "8 day ago" +%Y%m%d`now=`date +%Y%m%d`#定义svn备份日志路径logdir=/svnbackup/log#定义svn备份路径backupdir=/svnbackup#定义httpd的配置文件subdir=/etc/httpd/conf.d#定义 函数 连接192.168.3.152 svn服务器connection152() {        cd $backupdir/backup152        #如果系统存在8天前的备份则删除。        if [[ -d $fewdaysago ]]        then        rm -rf $fewdaysago        else        echo "1.  $fewdaysago not exist in /svnbackup/backup152/ " >> $logdir/report152_$now.log 2>&1        fi        echo "2.  scp backup svn from the 3.152 to 4.248 right now " >> $logdir/report152_$now.log 2>&1        #这里利用expect  实现自动输入密码等操作。使用该命令前,请先安装yum  -y   install   expect*        expect -c "                #永不超时                set timeout -1                #定义一个子shell,执行scp命令,将192.168.3.152上的svn备份数据,拷贝到本机。                spawn scp -r root@$IP152:/backup/svn/backup/$now.tar.gz $backupdir/backup152                 #自动化输入密码                expect \"root@$IP152's password:\"                send \"$Password\r\"                #完成传输则结束命令。                expect \"eof\"                "                #对上面的操作进行判断,如果正常执行完,则继续下面的动作。        if [[ $? = "0" ]];        then        echo "3.  backup 152svn have done " >> $logdir/report152_$now.log 2>&1        fi        echo "4.  unpack the $now.tar.gz" >> $logdir/report152_$now.log 2>&1        cd $backupdir/backup152        tar -xf $now.tar.gz        echo "5.  delete tar pack " >> $logdir/report152_$now.log 2>&1        rm -f $now.tar.gz        echo "6.  Testing rollback 152svn backup right now" >> $logdir/report152_$now.log  2>&1        #删除本机svn库目录下的所有文件及目录除了conf目录。这里本机做这个是为了测试拷贝过来的svn备份文件能够正常恢复。演练svn服务器灾后恢复。        cd $backupdir/152        ls -l $backupdir/152 | grep -v "conf" | awk '{print $9}' | while read dir        do        rm -rf $dir        done        echo "7.  yesterday data all has delete done" >> $logdir/report152_$now.log  2>&1        echo "8.  rollback now" >> $logdir/report152_$now.log  2>&1}                #开始svn灾后恢复动作。start() {        mv $backupdir/backup152/backup/svn/$now $backupdir/backup152/        rm -rf $backupdir/backup152/backup/*        rm -rf $backupdir/backup152/backup/        cd $backupdir/backup152/$now        cp -fvr $backupdir/backup152/$now/* $backupdir/152            #这里svn结合了httpd,方便用户web端访问。所以,httpd的配置文件中,就要修改下svn工程目录的位置。        cd $subdir        echo "9.  change httpd subversion.conf" >> $logdir/report152_$now.log  2>&1                #自动化执行httpd配置文件替换和httpd重启动作。        expect -c "                set timeout -1                spawn cp -ar $subdir/subversion152 $subdir/subversion.conf                 expect \"cp: overwrite 'subversion.conf'?\"                send \"yes\r\"                expect \"eof\"                "        #给目录赋权。        echo "10.  chown -R apache.apache $backupdir/152"        chown -R apache.apache $backupdir/152        /etc/init.d/httpd restart}connection152start

    以上shell可以执行svn的远程异地备份动作。磁盘监控以及mail报警,在下篇日志将介绍。

转载于:https://my.oschina.net/u/2322690/blog/485734

你可能感兴趣的文章
2015-2020智慧城市物联网市场复合年增长率达23.2%
查看>>
做好数据分析让物联网数据价值最大化
查看>>
OpenStack Days走进北京 主角是用户
查看>>
JVM问题诊断常用命令:jinfo,jmap,jstack
查看>>
叶成辉成神州控股新任CEO 曾在IBM/EMC任职
查看>>
中小企业客户营收增长将成微博2016年主推动力
查看>>
四川能投成功进军智慧城市投资市场
查看>>
雅虎公开三封收到的FBI国家安全信函
查看>>
云计算在大数据形式下的发展
查看>>
如何更好地进行机房项目的控制成本
查看>>
爱立信高通中兴等成立Avanci专利授权平台 旨在加速物联网发展
查看>>
美情报公司:勒索病毒WannaCry的创作者可能是中国人
查看>>
华科技:以市场为导向 以用户体验为标准
查看>>
诺基亚携手Facebook联合开展跨大西洋现场测试
查看>>
如何检查MySQL数据库的主从延时?
查看>>
红炜:改变光伏电站融资难也需水到渠成
查看>>
三星用户迎利好 三星将推月度安全更新
查看>>
网络时代安全问题凸显 互联网金融如何有效避开痛点?
查看>>
移动OA如何治愈外出办公“焦虑症”?
查看>>
电信运营商解决方案
查看>>