简易定时备份同步推送脚本
简介
一个简易脚本它可以完成以下功能
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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】