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