#!/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}"