前言
今天测试COS的时候,遇到了一个删除的小问题,也没查资料,就硬着头皮干,走了不少弯路,这里记录一下。
不能删除的问题
如下所示,我列出了4个文件夹。都是2022-03-30产生的。
[root@copy-of-vm-ee-centos76-v1 bin]# s3cmd ls s3://tidbtest-1304250695 DIR s3://tidbtest-1304250695/202203302226/ DIR s3://tidbtest-1304250695/202203302237/ DIR s3://tidbtest-1304250695/202203302238/ DIR s3://tidbtest-1304250695/202203302239/ DIR s3://tidbtest-1304250695/backup
复制
通过通配符可以查询。
[root@copy-of-vm-ee-centos76-v1 bin]# s3cmd ls s3://tidbtest-1304250695/20220330* DIR s3://tidbtest-1304250695/202203302226/ DIR s3://tidbtest-1304250695/202203302237/ DIR s3://tidbtest-1304250695/202203302238/ DIR s3://tidbtest-1304250695/202203302239/
复制
现在想要通过通配符*进行删除,竟然是不能删。
[root@copy-of-vm-ee-centos76-v1 bin]# s3cmd del s3://tidbtest-1304250695/20220330*[root@copy-of-vm-ee-centos76-v1 bin]# [root@copy-of-vm-ee-centos76-v1 bin]# s3cmd ls s3://tidbtest-1304250695/20220330* DIR s3://tidbtest-1304250695/202203302226/ DIR s3://tidbtest-1304250695/202203302237/ DIR s3://tidbtest-1304250695/202203302238/ DIR s3://tidbtest-1304250695/202203302239/
复制
难道只能一个一个的删,如果一天有一堆文件夹那岂不是要疯掉。这期间还有其他的事情。我就要同事帮我查一下,它丢了一个awk的脚本过来。我也没怎么思索,就照葫芦画瓢改造了一下。
原理很简单,首先通过通配符进行匹配,然后把读到的数据通过while循环读到变量 line进行处理。
s3cmd ls s3://tidbtest-1304250695/20220330* | grep "DIR" | while read -r line; do s3_file_name=`echo $line | awk -F "/" '{print $(NF-1)}'`; if [[ `echo ${s3_file_name:0:8}` -eq '20220330' ]]; then echo "s3cmd del ${S3PREFIX}/$s3_file_name" ; fi; done
复制
这个脚本执行效果如下。

现在把echo取消,直接执行。
s3cmd ls s3://tidbtest-1304250695/20220330* | grep "DIR" | while read -r line; do s3_file_name=`echo $line | awk -F "/" '{print $(NF-1)}'`; if [[ `echo ${s3_file_name:0:8}` -eq '20220330' ]]; then s3cmd del ${S3PREFIX}/$s3_file_name ; fi; done
复制
发现还是很顽固,程序看上去像是执行成功了,但是查看还是没有删掉。

接下来尝试在目录后面加 * 删除。
s3cmd ls s3://tidbtest-1304250695/20220330* | grep "DIR" | while read -r line; do s3_file_name=`echo $line | awk -F "/" '{print $(NF-1)}'`;
if [[ `echo ${s3_file_name:0:8}` -eq '20220330' ]];
then s3cmd del ${S3PREFIX}/$s3_file_name/* ;
fi;
done复制
这回调整之后终于可以了。

后面空闲下来查了一下文档,真是傻啊。不能直接删除文件夹,是需要加-r参数进行递归删除的。

发现自己有时间去改造脚本,就没时间去搜索查阅一下这个问题,这毛病真的得改改。
后记
这波操作还是因为对象存储不是很熟悉导致的,把简单的问题搞复杂化了。不过COS的界面上直接就有生命周期管理。功能还是很强的,可以帮助你将xx天之前的文件下沉到深度归档存储,也可以将xx天之前的直接进行删除,省去了脚本写删除的烦恼。

文章转载自TiDB之路,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。
评论
相关阅读
2025年4月中国数据库流行度排行榜:OB高分复登顶,崖山稳驭撼十强
墨天轮编辑部
1698次阅读
2025-04-09 15:33:27
2025年3月国产数据库大事记
墨天轮编辑部
825次阅读
2025-04-03 15:21:16
2025年3月国产数据库中标情况一览:TDSQL大单622万、GaussDB大单581万……
通讯员
579次阅读
2025-04-10 15:35:48
征文大赛 |「码」上数据库—— KWDB 2025 创作者计划启动
KaiwuDB
489次阅读
2025-04-01 20:42:12
数据库,没有关税却有壁垒
多明戈教你玩狼人杀
469次阅读
2025-04-11 09:38:42
国产数据库需要扩大场景覆盖面才能在竞争中更有优势
白鳝的洞穴
446次阅读
2025-04-14 09:40:20
最近我为什么不写评论国产数据库的文章了
白鳝的洞穴
379次阅读
2025-04-07 09:44:54
天津市政府数据库框采结果公布!
通讯员
348次阅读
2025-04-10 12:32:35
【活动】分享你的压箱底干货文档,三篇解锁进阶奖励!
墨天轮编辑部
332次阅读
2025-04-17 17:02:24
优炫数据库成功入围新疆维吾尔自治区行政事业单位数据库2025年框架协议采购!
优炫软件
327次阅读
2025-04-18 10:01:22