运维笔记--脚本:定时移动备份文件到指定目录

场景描述:bash

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

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

致使的问题:code

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

处理方式:blog

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

    脚本名称:mv_cron.ship

    脚本内容:get

#! /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=$'\n'
        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

脚本说明:it

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

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

    第7行,能够根据本身实际备份文件的后缀名,进行查找,这里是.zip文件。

定时任务配置:

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

10 06 * * * /data/mv_cron.sh
相关文章
相关标签/搜索