Last active 3 months ago

1Panel 第三方 App Store 同步更新脚本

Revision 8acb920d5622c392373c7a3f7721aca5729fb1a2

sync-1panel-appstore.sh Raw
1#!/bin/bash
2# 1Panel 第三方应用商店同步脚本(轻量优化版)
3# 仅同步应用,不执行镜像替换
4
5# 启用严格模式:遇到错误、未定义变量、管道错误时立即退出
6set -euo pipefail
7
8# 设置字段分隔符,防止文件名含空格或换行符时出错
9IFS=$'\n\t'
10
11# 配置路径
12GIT_REPO="https://cnb.cool/gyhwd.top/1panel-appstore" # 第三方应用商店地址
13TMP_DIR="/opt/1panel/resource/apps/local/appstore-localApps"
14LOCAL_APPS_DIR="/opt/1panel/resource/apps/local"
15
16# 确保脚本退出时自动清理临时目录(即使中途出错也会执行)
17# trap 'rm -rf "$TMP_DIR"' EXIT
18trap 'echo "🧹 清理临时目录: $TMP_DIR"; rm -rf "$TMP_DIR"' EXIT
19
20# 开始克隆应用商店仓库
21echo "📥 Cloning appstore repo..."
22git clone "$GIT_REPO" "$TMP_DIR"
23
24# 创建本地应用目录(如果不存在)
25mkdir -p "$LOCAL_APPS_DIR"
26
27# 遍历所有应用并同步到本地
28for app_path in "$TMP_DIR/apps/"*; do
29 # 跳过非目录项
30 [ -d "$app_path" ] || continue
31
32 app_name=$(basename "$app_path")
33 local_app_path="$LOCAL_APPS_DIR/$app_name"
34
35 echo "🔁 Updating app: $app_name"
36 # 如果本地已存在同名应用,先删除
37 [ -d "$local_app_path" ] && rm -rf "$local_app_path"
38 # 复制新版本应用
39 cp -r "$app_path" "$local_app_path"
40done
41
42echo "✅ Sync completed."