简易定时备份同步推送脚本

简介

一个简易脚本它可以完成以下功能

1、删除指定目录文件
2、根据当前时间进行打包
3、使用Bark消息推送(ios)
4、文件同步

配置定时任务

每天定时凌晨2点开始执行

#crontab -e
0 2 * * * /bin/bash /home/backup/SyncTarFiles.sh

一个名为SyncTarFiles.sh脚本

#/bin/bash

F_DATE=$(date +%Y-%m-%d_%H) #打印当前时间
F_FILE_NAME=backup_xxx.com_$F_DATE.tar.gz #使用tar命令+时间进行打包
FILE_SAVE_PATH="/home/web"    #被打包的路径
BARK_TOKEN=NXXXXXXXXXXXe #BARK推送(ios)

# 清除
DeleteFiles() {
    echo "清理文件"
    rm -rf /home/backup/backup_xxx.com_*
    echo "清理成功!"
}

# 压缩
CompressedFile() {
    # 执行tar命令进行压缩
    echo "开始压缩$F_FILE_NAME"
    tar -czf "$F_FILE_NAME" $FILE_SAVE_PATH  2>/dev/null 

    # 判断文件是否压缩成功
    if [ $? -eq 0 ] && [ -f "$F_FILE_NAME" ]; then
        echo "$F_FILE_NAME 压缩成功"
        curl https://api.day.app/$BARK_TOKEN/xxx.com压缩成功/$F_FILE_NAME  2>/dev/null 
        SyncFiles
        
    else
        echo "$F_FILE_NAME 压缩失败"
        curl https://api.day.app/$BARK_TOKEN/xxx.com压缩失败/$F_FILE_NAME  2>/dev/null 
    fi
}

# 同步文件
SyncFiles() {
    echo "开始发送文件$F_FILE_NAME"
    scp -P 22 -r /home/backup/ back@1.1.1.1:/home/back/
    if [ $? -eq 0 ]; then
        echo "$F_FILE_NAME 同步成功"
        curl https://api.day.app/$BARK_TOKEN/xxx.com同步成功/$F_FILE_NAME  2>/dev/null 
    else
        echo "$F_FILE_NAME 同步失败"
        curl https://api.day.app/$BARK_TOKEN/xxx.com同步失败/$F_FILE_NAME  2>/dev/null 
    fi
}
DeleteFiles
CompressedFile

改造(接入飞书)

因为工作原因后续使用安卓手机,无法使用Bark消息推送(ios)所以找到一个替代品。目前我使用飞书群自定义机器人进行通知。
开始进行改造。

先添加一个发送飞书机器人信息的脚本。

root@qwq:/home/backup# cat feishumsg.sh 
#飞书消息推送专用
curl -X POST -H "Content-Type: application/json" \
    -d "{\"msg_type\":\"text\",\"content\":{\"text\":\"$1\"}}" \
    "https://open.feishu.cn/open-apis/bot/v2/hook/$2"

使用说明,"字符串文本" token
比如

root@qwq:/home/backup# sh feishumsg.sh "你好" 0043b0b0-XXXX-4c77-XXXX-1b0e5b9329a8

输出效果

更多样例请参考官方提供的demo

改造原脚本

#/bin/bash

#获得当前瞬时时间
F_DATE=$(date +%Y-%m-%d_%H)
#根据时间打包命名
F_FILE_NAME=backup_XXXX.COM_$F_DATE.tar.gz
#打包后保存的路径
FILE_SAVE_PATH="/home/dujiaoka"
#飞书TOKEN
FSBOT_TOKEN=0043b0b0-XXXX-4c77-XXXX-1b0e5b9329a8

# 清除
DeleteFiles() {
    echo "清理文件/home/backup/backup_*"
    rm -rf /root/backup_aigit.me_*
    echo "清理成功!"
}

# 压缩
CompressedFile() {
    # 执行tar命令进行压缩
    echo "开始压缩$F_FILE_NAME"
    tar -czf "$F_FILE_NAME" $FILE_SAVE_PATH  2>/dev/null 

    # 判断文件是否压缩成功
    if [ $? -eq 0 ] && [ -f "$F_FILE_NAME" ]; then
        echo "$F_FILE_NAME 压缩成功"
        sh  /home/backup/feishumsg.sh "XXX压缩成功 $F_FILE_NAME" $FSBOT_TOKEN 2>/dev/null 
	sleep 30
        SyncFiles
        
    else
        echo "$F_FILE_NAME 压缩失败"
        sh  /home/backup/feishumsg.sh "XXX压缩失败 $F_FILE_NAME" $FSBOT_TOKEN 2>/dev/null 
    fi
}

# 同步文件
SyncFiles() {
    echo "开始发送文件$F_FILE_NAME"
    scp -P 65533 -r /root/* root@1.1.1.1:/home/aigit_back/
    if [ $? -eq 0 ]; then
        echo "$F_FILE_NAME 同步成功"
        sh  /home/backup/feishumsg.sh "XXX同步成功 $F_FILE_NAME" $FSBOT_TOKEN 2>/dev/null 
    else
        echo "$F_FILE_NAME 同步失败"
        sh  /home/backup/feishumsg.sh "XXX同步失败 $F_FILE_NAME" $FSBOT_TOKEN 2>/dev/null 
    fi
}
DeleteFiles
CompressedFile



posted @ 2023-06-18 01:01  iXiAo9  阅读(41)  评论(0编辑  收藏  举报