jenkins/deploy_s3cmd_download.sh
2025-04-22 10:44:36 +08:00

63 lines
1.6 KiB
Bash

#!/bin/bash
# 颜色定义
CYAN="\033[1;36m"
RED="\033[0;31m"
GREEN="\033[1;32m"
RESET="\033[0m"
:<<'COMMENT'
输入OSS内部桶介质存储路径列表
自动识别目录或文件
将其同步到本地
COMMENT
# 定义本地存储路径
LOCAL_PATH="/data/media"
mkdir -p "$LOCAL_PATH" # 确保本地路径存在
# OSS内部桶和外部桶的配置文件
INTERNAL_S3CFG=~/.s3cfg-internal
# 检查配置文件是否存在
if [ ! -f "$INTERNAL_S3CFG" ]; then
echo -e "${RED}Internal S3 configuration file not found.${RESET}"
exit 1
fi
# 检查是否传入了OSS路径参数
if [ $# -eq 0 ]; then
echo -e "${RED}No OSS paths provided. Please provide OSS paths as arguments.${RESET}"
exit 1
fi
# 遍历OSS路径列表
for oss_path in "$@"; do
echo -e "${CYAN}Processing OSS path: $oss_path${RESET}"
# 检查路径是否有效
if [[ ! $oss_path =~ ^s3:// ]]; then
echo -e "${RED}Skipping invalid OSS path: $oss_path${RESET}"
continue
fi
# 提取目标路径的本地路径
local_target="$LOCAL_PATH/$(basename "$oss_path")"
if [[ $oss_path =~ /$ ]]; then
# 如果是目录,确保尾部有斜杠
local_target="$LOCAL_PATH/$(basename "$oss_path")/"
mkdir -p "$local_target" # 确保本地目录存在
fi
# 使用 s3cmd sync 同步文件或目录
echo -e "${GREEN}Syncing $oss_path to local path $local_target${RESET}"
s3cmd -c "$INTERNAL_S3CFG" sync "$oss_path" "$local_target" # | grep "Downloaded"
if [ $? -eq 0 ]; then
echo -e "${GREEN}Successfully synced $oss_path to $local_target${RESET}"
else
echo -e "${RED}Error: Failed to sync $oss_path.${RESET}"
fi
done
echo -e "${GREEN}Script execution completed.${RESET}"