• svn全量备份脚本解释


    #!/bin/bash   下面的代码使用bash进行编译,#是注释的标识

    #This scripts for full bakcup svn repository!

    #Define Variable , shell变量没有修饰符,是全局变量

    SVN="/usr/local/svn"    #用于存放错误日志的目录

    SVN_PRO="/usr/local/svn/bin/svnadmin hotcopy" #svnadmin hotcopy指令的路径,前面的目录可以在环境变量中配置

    SVN_LOOK="/usr/local/svn/bin/svnlook youngest"  #svnlook youngest指令的路径,前面的目录可以在环境变量中配置,用于获取版本号

    SVN_ROOT=/svn #需要备份的目录

    SVN_BACKUP=/svn_backup #备份保存的目录

    BACKUP_DATE=$(date +%Y-%m-%d)  #获取备份的日期,日期格式为2013-07-02

    #check up backup root directory if exist !     判断备份目录是否存在

    if [ ! -e /svn_backup ]    #! -e不存在的意思

    then  mkdir /svn_backup  #then与if是一对判断词,默认的还有else,else后无语句,可以省略

    fi   #if 的结束此 ,case的结束词是esac

    #check mount point if not mount 判断能否联通192.168.1.26的服务器

    IP="192.168.1.26"   #定义新的变量IP

    ping -c 1 -w 1 $IP &>/dev/null  #使用变量时,要在变量前加$

    #ping -c 1 -w 1 $IP  表示测试连接服务器,在前台执行,如果此时输入命令,则不被执行,在前台输出

    #ping -c 1 -w 1 $IP & 表示测试连接服务器,在后台执行,如果此时输入命令,则可以被执行,在前台输出,&表示在后台执行

    #ping -c 1 -w 1 $IP &>/dev/null 表示表示测试连接服务器,在后台执行,并且不在前台输出,>表示将输出引入到,/dev/null表示一个空文件,进去的内容都会丢失,从里面                                                    #也读不到任何信息

    if [ $? = 0 ]   #$? 是显示最后命令的退出状态,0表示没有错误,其他表示有错误

    then       

          #检查文件系统的磁盘空间占用情况,并挂载windows共享盘,也就是使windows下共享盘在linux下可读
          #如果操作失败则将日志写在backup_error.log中,退出 

          #df用于检查磁盘空间占用情况,df -k 表示以k字节为单位显示 

       df -k | grep $IP &>/dev/null || mount -t cifs //$IP/svnbackup $SVN_BACKUP -o password=123456

    else  echo "$(date +%Y-%m-%d-%T)==>Backup Computer[$IP] already shutdown!" >>$SVN/backup_error.log  

    echo " " >>$SVN/backup_error.log        

    exit 1 

    fi

    #Get repo directory name

    REPO_NAME_LIST=$(ls $SVN_ROOT)  #获取需要备份目录及文件信息

    #define logfile

    LOGFILE=$SVN_BACKUP/full_backup.log  #定义日志文件名称

    #output a backup date to log file

    echo "====================$BACKUP_DATE========================" >>$LOGFILE  #将备份日期输入到full_backup.log 里

    #check up backup directory if exist then exit,if not exist mkdir

    if [ -e $SVN_BACKUP/Full_"$BACKUP_DATE" ] #判断今日是否已备份,如果没有,则创建文件

    then  echo "$(date +%T)==>$SVN_BACKUP/Full_"$BACKUP_DATE" already exists!" >>$LOGFILE  

            echo "Thers is no need backup again!" >>$LOGFILE  

            exit 1

    else  mkdir $SVN_BACKUP/Full_"$BACKUP_DATE"

    fi

    #mkdir full_repo_number if not exsits!

    #full_repo_number purpose is leave with repo number single file for each repo

    if [ ! -e $SVN_BACKUP/full_repo_number ]

    then  

      mkdir $SVN_BACKUP/full_repo_number

    fi

    #define variables for full_repo_numher

    FULL_REPO_VERSION=$SVN_BACKUP/full_repo_number

    #start backup

    for repo_name in $REPO_NAME_LIST

    do  

    #get repo version  

      get_repo_version=$($SVN_LOOK $SVN_ROOT/$repo_name) #使用svnlook youngest指令获取SVN_ROOT/repo_name这个文件的版本号

     #full backup  全量备份

    $SVN_PRO $SVN_ROOT/$repo_name  $SVN_BACKUP/Full_"$BACKUP_DATE"/$repo_name #使用svnadmin hotcopy指令备份SVN_ROOT/repo_name 到                                                                                                                                              #SVN_BACKUP/Full_"BACKUP_DATE"/repo_name

            echo "$(date +%T)==> repository:[$repo_name] at version($get_repo_version) Successfull Full Backup !" >>$LOGFILE

     #output repo version number to /svn_backup/full_repo_number directory  将版本号写入$repo_name.number文件中

      echo "$get_repo_version" >$FULL_REPO_VERSION/$repo_name.number 

    done

    #output a blank line to log file

    echo "" >>$LOGFILE  #给full_backup.log 文件加一个空行

  • 相关阅读:
    22 块级元素和行内元素
    21 文档流
    20101018T3 付账
    20181018T1 括号
    poj3417暗的连锁
    点的距离(LCA)
    浅谈RMQ实现LCA
    小R的调度
    bzoj1798维护序列
    bzoj3211花神游历各国
  • 原文地址:https://www.cnblogs.com/huhu-xiaomaomi/p/3167304.html
Copyright © 2020-2023  润新知