• Shell脚本使用汇总整理——文件夹及子文件备份脚本


    Shell脚本使用汇总整理——文件夹及子文件备份脚本

    Shell脚本使用的基本知识点汇总详情见连接:

    https://www.cnblogs.com/lsy-blogs/p/9223477.html

    脚本分为三部分配置信息、脚本文件、定时任务;

    1、配置信息:

    backupFilePath=/wocloud/soft/tomcat/yearAppraiseTomcat/tomcat/webapps/yearAppraiseSys/upload
    saveBackupFilePath=/wocloud/db/fileBackups
    fileName=upload
    backupsFileDay=3

    参数说明:

    backupFilePath:要备份的文件夹的绝对路径
    saveBackupFilePath:存放备份文件的绝对根路径
    fileName:要备份的文件夹名称
    backupsFileDay:保留备份文件的天数

    2、脚本文件:

    #!/bin/sh

    #db_backups_conf.txt文件路径
    db_backups_conf="/wocloud/shell/file_backups_conf.txt"

    #判断文件是否存在
    if [ -f "${db_backups_conf}" ];then

    echo $(date +'%Y-%m-%d %H:%M:%S')" 要备份的文件存在,开始进行文件备份"

    #获取等号前内容,作为map中的Key值
    dbArrOne=($(awk -F'[=]' '{print $1}' ${db_backups_conf} ))

    #获取等号后内容,作为map中的value值
    dbArrTwo=($(awk -F'[=]' '{print $2}' ${db_backups_conf}))

    #创建一个空map
    declare -A map=()

    #通过循环,将db_backups_conf配置文件中的信息存储在map中
    for((i=0;i<${#dbArrOne[@]};i++))
    do
    map[${dbArrOne[i]}]=${dbArrTwo[i]}
    done


    #获取当前年月日
    saveday=$(date +%Y%m%d)

    #获取超出备份天数的年月日
    delday=$(date -d ${map["backupsFileDay"]}' days ago' +%Y%m%d)

    #备份文件
    echo $(date +'%Y-%m-%d %H:%M:%S')" 备份文件:"${map["backupFilePath"]}

    #判断保存备份文件路径是否存在
    if [ -f "|${map['saveBackupFilePath']}/${saveday}/${map['fileName']}_$(date +'%Y%m%d%H%M%S')" ];then
    cp -f -r ${map["backupFilePath"]} ${map["saveBackupFilePath"]}/${saveday}/${map["fileName"]}_$(date +'%Y%m%d%H%M%S')/
    else
    mkdir -p ${map["saveBackupFilePath"]}/${saveday}/${map["fileName"]}_$(date +'%Y%m%d%H%M%S')
    cp -f -r ${map["backupFilePath"]} ${map["saveBackupFilePath"]}/${saveday}/${map["fileName"]}_$(date +'%Y%m%d%H%M%S')/
    fi

    #删除保存文件路径中n天前备份的数据文件
    echo $(date +'%Y-%m-%d %H:%M:%S')" 删除备份文件:"${map["saveBackupFilePath"]}/${delday}
    rm -f -r ${map["saveBackupFilePath"]}/${delday}

    echo $(date +'%Y-%m-%d %H:%M:%S')" 文件备份完毕,脚本执行完毕"

    else
    echo "配置文件不存在"
    fi

    注意:注意代码开头中读取配置文件的路径,这个位置可能不一样,需要进行适当修改。

    3、定时任务:

    Linux中的sh脚本定时任务,可以通过crontab进行管理,如果linux中没有安装crontab,需要进行安装:

    安装命令:

    yum -y install vixie-cron
    yum -y install crontabs

    服务管理

    service crond start     //启动服务
    service crond stop      //关闭服务
    service crond restart   //重启服务
    service crond reload    //重新载入配置
    service crond status    //查看crontab服务状态

    加入开机自启

    chkconfig crond on

    (1)设定定时任务:

    crontab -e 编写定时任务表达式

    例如:

    1 */3 * * * /wocloud/shell/fileBackupsScript.sh &>/wocloud/shell/fileBackupsLogs/fileBackupsEcho_`date +\%Y-\%m-\%d-\%H-\%M-\%S`.txt 2>&1

    定时表达式+脚本绝对路径+脚本打印信息日志输出绝对路径(一定要有日志输出记录,方便以后进行查看)

    (2)重新启动crond

    service crond restart;

  • 相关阅读:
    Java relection half
    QT学习输入与输出
    FusionCharts(基于Flash的图表工具)使用心得
    测接口遇到的坑
    创建圆
    修改对象属性
    创建直线
    ObjectArx工程配置
    Excel转PDF文件,Excel转TIF文件
    创建多段线
  • 原文地址:https://www.cnblogs.com/lsy-blogs/p/10174297.html
Copyright © 2020-2023  润新知