首先安装COSCMD
sudo yum install python3-pip
然后配置 coscmd
coscmd config -a YourActualSecretId -s YourActualSecretKey -r YourActualRegion -b YourActualBucket
检查 coscmd
是否在 PATH
中
which coscmd
添加到PATH
中
export PATH=$PATH:/usr/local/bin # 添加 /usr/local/bin 到 PATH
重新加载配置文件或重新启动终端
source /root/.bashrc
最后执行SH脚本
#!/bin/bash
# 替换为你的腾讯云 COS 相关信息
SECRET_ID=""
SECRET_KEY=""
REGION=""
BUCKET=""
# 要删除的文件夹路径(注意不要以斜杠结尾)
COS_PATH=""
# 获取当前时间戳
CURRENT_TIMESTAMP=$(date +%s)
# 打印 COS_PATH 以进行调试
echo "COS_PATH: $COS_PATH"
# 配置 coscmd
coscmd config -a $SECRET_ID -s $SECRET_KEY -r $REGION -b $BUCKET
# 列出文件夹下的所有文件
FILES=$(coscmd list -a -r $COS_PATH | awk '{print $1}')
# 获取文件数量
FILE_COUNT=$(echo "$FILES" | wc -l)
# 计算要删除的文件数量 这里填删除数量+1(我是5个 5+1=6)
FILES_TO_DELETE=$((FILE_COUNT - 6))
# 遍历文件,输出文件信息,并删除多余的文件
for FILE in $FILES; do
# 使用 coscmd info 获取文件信息,提取最后修改时间
FILE_INFO=$(coscmd info $FILE)
# 判断是否为目录,如果是则跳过删除
if [[ "$FILE_INFO" == *Content-Type*application/x-directory* ]]; then
echo "Skipping deletion for directory: $FILE"
continue
fi
# 提取文件最后修改时间
LAST_MODIFIED=$(echo "$FILE_INFO" | grep "Last-Modified" | awk '{print $2, $3, $4}')
# 将最后修改时间转换为时间戳
FILE_TIMESTAMP=$(date -d "$LAST_MODIFIED" +%s)
# 计算文件上传时间与当前时间的差值
TIME_DIFF=$((CURRENT_TIMESTAMP - FILE_TIMESTAMP))
# 判断文件是否为多余的文件(超过最近5个文件)
if [ $FILES_TO_DELETE -gt 0 ]; then
echo "File info for $FILE:"
echo "$FILE_INFO"
# 删除文件
echo "Deleting file: $FILE"
yes | coscmd delete $FILE
# 更新要删除的文件数量
FILES_TO_DELETE=$((FILES_TO_DELETE - 1))
else
echo "Skipping deletion for file within the last five files: $FILE"
fi
done
echo "Cleanup completed."