靳闯博客 记录是一种习惯 、分享是一种态度
  • 波浪
  • 波浪
  • 波浪
  • 波浪
查询和下载备份数据的临时脚本
发表于: | 分类: 技术积累 | 标签: Linux Shell

一般都是写好计划任务自动备份的,这是个手动查询本地备份和下载备份的脚本

# 脚本使用:
例如:
  本地备份目录为  /backup/project
  按月备份目录为  /backup/project/202202
  备份文件名称格式为 日期-文件名.tar.gz
  完整文件路径为  /backup/project/202202/日期-文件名.tar.gz

脚本内容

#!/bin/bash

# 基础变量
cate="/backup/project"  #本地备份目录
down_sts="curl --connect-timeout 2 -I -m 5 -o /dev/null -s -w %{http_code}"  #url状态码查询
down_date=`date +%Y%m%d` #匹配可下载的文件名称(时间格式化)
same_month=`date +%Y%m` #本地备份按月目录
dir="$cate/$same_month" #本地备份完整目录

# 颜色输出
log_success(){
    echo -e "\E[1;32m$1\E[0m"
}
log_error(){
    echo -e "\E[31m$1\E[0m"
}

# 本地文件查询
load_backfile(){
    arbit="$1"
    if [ "$arbit" == "" ];then month="$same_month";else month="$arbit";fi
    ym=`echo -e "\E[1;34m$month月份\E[0m"`
    echo -e "\E[1;35m********** 本地[\E[0m$ym\E[1;35m]备份文件 **********\E[0m"
    ls $cate|grep $month >/dev/null && tree -C -sh $cate/$month/|grep -v "direct" || log_error "输入目录错误不存在"
}  

# 查询可下载的备份文件
backfile(){
    echo -e "\E[1;35m********** 可下载备份文件(当月当天日期往前8天) **********\E[0m"
    for i in `seq 8`;do
        file_name="$down_date-xxx.xxxx-xxx.tar.gz"
        down_url="https://xxx.xxxxxxx.xxx/xxx/xxxx/xxxx/$file_name"
        code=`$down_sts $down_url`
        if [ $code -eq 200 ];then log_success "$i-有效-备份日期存在:   $file_name";array[$i]=$down_url;else log_error "$i-无效-备份日期不存在: $file_name";fi
        down_date=`date --date="-$i day" +%Y%m%d`
    done
    down_date=`date +%Y%m%d`
}

# 执行
while true;do
    load_backfile
    backfile
    info=`echo -e "\E[1;33m\n操作:\na 下载有效备份(目录为$dir)\nb 查询本地其他月份备份文件\nc 刷新\nd 退出\n请输入: \E[0m"`
    while true;do
        read -p "$info" key
        case $key in
            a)
                while true;do
                    read -p "输入有效备份文件前面序号 (q 返回): " num
                    index=`echo "${array[$num]}"`
                    if [ "$index" != "" ];then  wget -P $dir `echo "${array[$num]}"`;elif [ "$num" == "q" ];then break;else log_error "Error: 序号输入错误";fi
                done
            ;;
            b)
                while true;do
                    read -p "输入存在的目录[例如 202112 ] (q 返回)" m
                    if [ "$m" == "q" ];then break;else load_backfile $m;fi
                done
            ;;
            c)
                break
            ;;
            d)
                exit
            ;;
            *)
                log_error "Error: 输入序号 或者 输入d退出"
            ;;
        esac
    done
done

微信截图_20220216191114.png


本站文章除注明[转载|引用|原文]出处外,均为本站原生内容,转载前请注明出处 | 文章链接地址:https://me.jinchuang.org/archives/1189.html

如果这篇文章帮助到了你,我感到十分荣幸!

记录 🐾 分享 👣 进步 💪 变强


📬 评论留言

顶部