zoukankan      html  css  js  c++  java
  • 运维笔记--脚本:定时移动备份文件到指定目录

    场景描述:

    某应用系统,相关备份文件存放在目录:/usr/data_bak/backups

    随着时间的累积,系统每天产生的备份文件不断增大,当天产生的备份文件大于10G。

    导致的问题:

    1. 系统盘磁盘空间不是很大,单个备份文件过大,存放3天左右,系统盘磁盘空间就会告警,导致新的备份文件不能正常生成。
    2. 备份文件在默认配置目录,应该归档在统一的目录

    处理方式:

        脚本内容,每天早上6点10分将备份文件,移动到指定备份目录。

        脚本名称:mv_cron.sh

        脚本内容:

    #! /bin/bash
    path1="/usr/data_bak/"
    path2="/home/data_bak/pg_bak/"
    timelimit1="+6"
    timelimit2="-17"
    for i in "backups"; do
            list_newfiles=`cd $path1$i && find -iname "*.zip" -type f | awk '{print substr($1,3)}'`
            echo ""
            echo "target folder: $path2"
            echo "Trying to move those files in $path1$i"
            echo "$list_newfiles"
            echo ""
            OLD_IFS=$IFS
            IFS=$'
    '
            arr_newfiles=($list_newfiles)
            for s in ${arr_newfiles[@]}; do
                    #echo "$s"
                    isfindthisfile=`find $path2 -iname $s`
                    if [ -z "$isfindthisfile" ]; then
                            echo "$path1$i/$s is not in target folder,try to copy!"
                            mv "$path1$i/$s" "$path2/$s.TMP"
                            mv "$path2/$s.TMP" "$path2/$s"
                            echo "$path1$i/$s has been moved successfully!!!"
                    else
                            echo "$path1$i/$s is allready in target folder,trying to copy next !"
                    fi
            done
    done
    IFS=$OLD_IFS

    脚本说明:

        path1 是当前系统备份文件所在目录,

        path2 是目标存放备份文件的目录。

        第7行,可以根据自己实际备份文件的后缀名,进行查找,这里是.zip文件。

    定时任务配置:

        用系统自带crontab配置,每天早上6点10分执行脚本。crontab -e 里边添加如下内容:

    10 06 * * * /data/mv_cron.sh
  • 相关阅读:
    从书上学的东西(顺带总结一发)
    网上讲的好的知识点汇总
    土地征用题解(兼斜率优化详解)
    Blocks题解(区间dp)
    高精度模板汇总
    动态规划总结
    异或序列(题解)(莫队)
    小Z的袜子(题解)(莫队)
    小B的询问(题解)(莫队)
    凸包模板——Graham扫描法
  • 原文地址:https://www.cnblogs.com/hellojesson/p/11584446.html
Copyright © 2011-2022 走看看