青云bucket如何快速删除文件夹

今天想删除青云bucket的文件夹  但是发现非常坑的一点是它一次最多只让删除1000个文件  可是我的文件夹有10几万的文件  所以我就写了个脚本来解决这个问题

环境的配置可以参考我的上一片文章

https://blog.youkuaiyun.com/tongcheng985/article/details/145535829?spm=1001.2014.3001.5501

环境配置好了以后就在文本编辑器里输入下面的代码(删除文件夹的路径结尾要有/

#!/bin/bash

# 配置青云S3的Endpoint、Access Key和Secret Key
export AWS_ACCESS_KEY_ID=""  # 替换为你的Access Key
export AWS_SECRET_ACCESS_KEY=""  # 替换为你的Secret Key
QINGCLOUD_S3_ENDPOINT="https://s3.qingstor.com"  # 替换为你的Endpoint

# 配置S3存储桶和文件夹路径
BUCKET_NAME=""  # 替换为你的存储桶名称
S3_FOLDER_PATH="/"  # 替换为你要删除的文件夹路径

# 并发线程数
MAX_THREADS=10  # 增加并发线程数以提高性能

# 日志文件路径(记录删除的文件)
LOG_FILE="s3_delete.log"

# 检查 s5cmd 是否已安装
if ! command -v s5cmd &> /dev/null; then
    echo "s5cmd 未安装,正在安装..."
    wget https://github.com/peak/s5cmd/releases/download/v2.0.0/s5cmd_2.0.0_Linux-64bit.tar.gz
    tar -xvf s5cmd_2.0.0_Linux-64bit.tar.gz
    sudo mv s5cmd /usr/local/bin/
    if [ $? -ne 0 ]; then
        echo "安装 s5cmd 失败,请手动安装后重试。"
        exit 1
    fi
fi

# 获取要删除的文件总数
echo "正在统计待删除文件数量..."
TOTAL_FILES=$(s5cmd --endpoint-url "$QINGCLOUD_S3_ENDPOINT" ls "s3://$BUCKET_NAME/$S3_FOLDER_PATH*" | wc -l)
echo "找到 $TOTAL_FILES 个文件待删除。"

# 提示用户确认
read -p "确认删除 s3://$BUCKET_NAME/$S3_FOLDER_PATH 下的 $TOTAL_FILES 个文件?(y/n) " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
    echo "操作已取消。"
    exit 0
fi

# 中断处理函数
handle_interrupt() {
    echo -e "\n检测到中断信号,正在停止删除操作..."
    DELETED_FILES=$(grep -c "rm s3://" "$LOG_FILE")
    echo "已删除 $DELETED_FILES/$TOTAL_FILES 个文件。"
    exit 1
}

# 捕获中断信号
trap handle_interrupt SIGINT

# 删除文件并实时输出进程
echo "开始删除文件(日志保存到 $LOG_FILE)..."
s5cmd --endpoint-url "$QINGCLOUD_S3_ENDPOINT" --numworkers "$MAX_THREADS" rm "s3://$BUCKET_NAME/$S3_FOLDER_PATH*" 2>&1 | \
  tee "$LOG_FILE" | \
  while IFS= read -r line; do
    if [[ "$line" == *"rm s3://"* ]]; then
      FILE_PATH=$(echo "$line" | awk '{print $2}')
      echo "[$(date '+%Y-%m-%d %H:%M:%S')] 已删除: $FILE_PATH"
    fi
  done

# 统计已删除文件数量
DELETED_FILES=$(grep -c "rm s3://" "$LOG_FILE")
echo "删除完成!已删除 $DELETED_FILES/$TOTAL_FILES 个文件。"

然后在终端输入

chmod +x

再把脚本拖到里面

最后 再单独把脚本拖到终端里面 回车执行

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值