v3.5: 添加TG通知和定时快照功能
This commit is contained in:
@@ -513,6 +513,9 @@ create_snapshot() {
|
|||||||
local size=$(du -h "$snapshot_file" | cut -f1)
|
local size=$(du -h "$snapshot_file" | cut -f1)
|
||||||
log "快照已创建: $snapshot_file ($size)"
|
log "快照已创建: $snapshot_file ($size)"
|
||||||
|
|
||||||
|
# TG通知
|
||||||
|
send_tg "📸 *${VPS_NAME}* 快照完成\n大小: $size"
|
||||||
|
|
||||||
# 清理本地旧快照
|
# 清理本地旧快照
|
||||||
cleanup_local
|
cleanup_local
|
||||||
|
|
||||||
@@ -744,6 +747,9 @@ do_sync_remote() {
|
|||||||
cleanup_remote
|
cleanup_remote
|
||||||
|
|
||||||
log "✅ 同步完成"
|
log "✅ 同步完成"
|
||||||
|
|
||||||
|
# TG通知
|
||||||
|
send_tg "📤 *${VPS_NAME}* 同步完成\n远程: $REMOTE_IP:$remote_path"
|
||||||
}
|
}
|
||||||
|
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
@@ -757,6 +763,70 @@ send_tg() {
|
|||||||
-d chat_id="$TG_CHAT_ID" -d text="$msg" -d parse_mode="Markdown" > /dev/null
|
-d chat_id="$TG_CHAT_ID" -d text="$msg" -d parse_mode="Markdown" > /dev/null
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#===============================================================================
|
||||||
|
# 定时快照
|
||||||
|
#===============================================================================
|
||||||
|
|
||||||
|
setup_cron() {
|
||||||
|
local script_path=$(readlink -f "$0")
|
||||||
|
|
||||||
|
echo ""
|
||||||
|
info "⏰ 设置定时快照"
|
||||||
|
echo ""
|
||||||
|
echo " 1) 每天一次"
|
||||||
|
echo " 2) 每12小时"
|
||||||
|
echo " 3) 每6小时"
|
||||||
|
echo " 4) 每小时"
|
||||||
|
echo " 5) 自定义cron表达式"
|
||||||
|
echo " 6) 查看当前定时任务"
|
||||||
|
echo " 7) 删除定时任务"
|
||||||
|
echo " 0) 返回"
|
||||||
|
echo ""
|
||||||
|
read -p "请选择: " cron_choice
|
||||||
|
|
||||||
|
local cron_expr=""
|
||||||
|
case $cron_choice in
|
||||||
|
1) cron_expr="0 2 * * *" ;;
|
||||||
|
2) cron_expr="0 */12 * * *" ;;
|
||||||
|
3) cron_expr="0 */6 * * *" ;;
|
||||||
|
4) cron_expr="0 * * * *" ;;
|
||||||
|
5) read -p "输入cron表达式: " cron_expr ;;
|
||||||
|
6)
|
||||||
|
echo ""
|
||||||
|
crontab -l 2>/dev/null | grep -E "vps-snapshot|快照" || echo "无定时任务"
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
7)
|
||||||
|
crontab -l 2>/dev/null | grep -v "vps-snapshot" | crontab -
|
||||||
|
log "定时任务已删除"
|
||||||
|
return
|
||||||
|
;;
|
||||||
|
0) return ;;
|
||||||
|
*) error "无效选项"; return ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
[ -z "$cron_expr" ] && return
|
||||||
|
|
||||||
|
# 选择快照类型
|
||||||
|
echo ""
|
||||||
|
echo " 1) 仅本地快照"
|
||||||
|
echo " 2) 快照并同步远程"
|
||||||
|
read -p "请选择: " snap_type
|
||||||
|
|
||||||
|
local cmd=""
|
||||||
|
case $snap_type in
|
||||||
|
1) cmd="$script_path snapshot" ;;
|
||||||
|
2) cmd="$script_path snapshot-sync" ;;
|
||||||
|
*) error "无效选项"; return ;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# 添加到crontab
|
||||||
|
(crontab -l 2>/dev/null | grep -v "vps-snapshot"; echo "$cron_expr $cmd # vps-snapshot") | crontab -
|
||||||
|
|
||||||
|
log "✅ 定时任务已设置: $cron_expr"
|
||||||
|
send_tg "⏰ *${VPS_NAME}* 定时快照已设置\n$cron_expr"
|
||||||
|
}
|
||||||
|
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
# 配置管理
|
# 配置管理
|
||||||
#===============================================================================
|
#===============================================================================
|
||||||
@@ -846,10 +916,11 @@ show_menu() {
|
|||||||
echo " 10) 导入 Docker 数据"
|
echo " 10) 导入 Docker 数据"
|
||||||
echo " 11) 查看本地快照"
|
echo " 11) 查看本地快照"
|
||||||
echo " 12) 同步到远程"
|
echo " 12) 同步到远程"
|
||||||
echo " 13) 安装依赖"
|
echo " 13) 设置定时快照"
|
||||||
|
echo " 14) 安装依赖"
|
||||||
echo " 0) 退出"
|
echo " 0) 退出"
|
||||||
echo ""
|
echo ""
|
||||||
read -p "请选择 [0-13]: " choice
|
read -p "请选择 [0-14]: " choice
|
||||||
|
|
||||||
case $choice in
|
case $choice in
|
||||||
1) do_setup ;;
|
1) do_setup ;;
|
||||||
@@ -881,7 +952,8 @@ show_menu() {
|
|||||||
ls -lh "${LOCAL_DIR:-/var/snapshots}" 2>/dev/null || echo "无快照"
|
ls -lh "${LOCAL_DIR:-/var/snapshots}" 2>/dev/null || echo "无快照"
|
||||||
;;
|
;;
|
||||||
12) do_sync_remote ;;
|
12) do_sync_remote ;;
|
||||||
13) install_deps ;;
|
13) setup_cron ;;
|
||||||
|
14) install_deps ;;
|
||||||
0) exit 0 ;;
|
0) exit 0 ;;
|
||||||
*) error "无效选项" ;;
|
*) error "无效选项" ;;
|
||||||
esac
|
esac
|
||||||
@@ -898,7 +970,15 @@ show_menu() {
|
|||||||
case "${1:-}" in
|
case "${1:-}" in
|
||||||
setup) do_setup ;;
|
setup) do_setup ;;
|
||||||
scan) detect_apps ;;
|
scan) detect_apps ;;
|
||||||
snapshot) create_snapshot "${2:-/var/snapshots}" "${3:-snapshot}" ;;
|
snapshot)
|
||||||
|
load_config 2>/dev/null || true
|
||||||
|
create_snapshot "${LOCAL_DIR:-/var/snapshots}" "${VPS_NAME:-snapshot}"
|
||||||
|
;;
|
||||||
|
snapshot-sync)
|
||||||
|
load_config 2>/dev/null || true
|
||||||
|
create_snapshot "${LOCAL_DIR:-/var/snapshots}" "${VPS_NAME:-snapshot}"
|
||||||
|
do_sync_remote
|
||||||
|
;;
|
||||||
migrate) do_migrate ;;
|
migrate) do_migrate ;;
|
||||||
docker-export) docker_export "${2:-/var/snapshots}" ;;
|
docker-export) docker_export "${2:-/var/snapshots}" ;;
|
||||||
docker-import) docker_import "${2:-/var/snapshots}" ;;
|
docker-import) docker_import "${2:-/var/snapshots}" ;;
|
||||||
@@ -908,7 +988,8 @@ case "${1:-}" in
|
|||||||
echo "命令:"
|
echo "命令:"
|
||||||
echo " setup 配置向导"
|
echo " setup 配置向导"
|
||||||
echo " scan 扫描已安装应用"
|
echo " scan 扫描已安装应用"
|
||||||
echo " snapshot 创建快照"
|
echo " snapshot 创建本地快照"
|
||||||
|
echo " snapshot-sync 创建快照并同步远程"
|
||||||
echo " migrate 一键迁移"
|
echo " migrate 一键迁移"
|
||||||
echo " docker-export 导出 Docker"
|
echo " docker-export 导出 Docker"
|
||||||
echo " docker-import 导入 Docker"
|
echo " docker-import 导入 Docker"
|
||||||
|
|||||||
Reference in New Issue
Block a user