From d6ab7ddfadefc132273630a0b7a377b20c7677af Mon Sep 17 00:00:00 2001 From: CN-JS-HuiBai Date: Thu, 16 Apr 2026 21:55:49 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E8=A7=A3=E5=8E=8B=E5=8A=9F?= =?UTF-8?q?=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- transit2minio.sh | 49 +++++++++++++++++++++++++++++++++++++----------- 1 file changed, 38 insertions(+), 11 deletions(-) diff --git a/transit2minio.sh b/transit2minio.sh index 2d453b28..5228d118 100644 --- a/transit2minio.sh +++ b/transit2minio.sh @@ -1,35 +1,62 @@ -#!/bin/bash +#!/usr/bin/env bash set -e -# MinIO 目标路径 DEST="myminio/downloads/singbox" echo "请输入 Gitea Actions 编译好的 zip 文件路径(本地路径或URL):" read -r FILE -# 判断 mc 是否可用 +# mc 检查 if ! command -v mc >/dev/null 2>&1; then - echo "错误:mc 命令未安装" + echo "错误:mc 未安装" + exit 1 +fi + +# unzip 检查 +if ! command -v unzip >/dev/null 2>&1; then + echo "错误:unzip 未安装" exit 1 fi # 如果是 URL,先下载 if [[ "$FILE" =~ ^https?:// ]]; then echo "检测到 URL,开始下载..." - TMP_FILE="/tmp/$(basename "$FILE")" - curl -L "$FILE" -o "$TMP_FILE" - FILE="$TMP_FILE" + TMP_ZIP="/tmp/$(basename "$FILE")" + curl -L "$FILE" -o "$TMP_ZIP" + FILE="$TMP_ZIP" fi -# 判断文件是否存在 +# 校验文件 if [[ ! -f "$FILE" ]]; then echo "错误:文件不存在 -> $FILE" exit 1 fi -echo "开始上传到 MinIO:$DEST" +# 创建临时解压目录 +TMP_DIR=$(mktemp -d) +echo "解压到:$TMP_DIR" -mc cp "$FILE" "$DEST/" +unzip -q "$FILE" -d "$TMP_DIR" -echo "上传完成 ✅" \ No newline at end of file +# 找到解压后的第一层目录(兼容 zip 内有/无顶层目录) +cd "$TMP_DIR" + +# 如果只有一个目录,就进入它 +FIRST_DIR=$(ls -1 | head -n 1) + +if [[ -d "$FIRST_DIR" ]]; then + TARGET_DIR="$TMP_DIR/$FIRST_DIR" +else + TARGET_DIR="$TMP_DIR" +fi + +echo "开始上传目录内容到 MinIO:$DEST" + +# 复制目录内所有内容(不是整个文件夹) +mc cp --recursive "$TARGET_DIR/" "$DEST/" + +echo "上传完成 ✅" + +# 清理 +rm -rf "$TMP_DIR" \ No newline at end of file