s3cmd ls之迷惑

5 篇文章 0 订阅

习惯了文件系统的我们一直都觉得 ls 命令应该会把文件全部 list 出来,对于 s3cmd ls 我一开始也是这么理解的。

直到有一天,同事通过 s3cmd delete 删除了一个文件,执行 s3cmd ls 竟然返回200,但是 s3cmd get 却返回404,这就很奇怪了,用户明明已经删了对象,为何 ls 得到呢,这不合理,当然 get 不到,那才是合理的,那么 get 不应该 ls 得到啊。

具体的情况如下。

[root@site ~]# s3cmd ls s3://game/1586744327001/sample/allblueapp/80121/ap_80121_14_20200515115522_216.txt     
2020-05-15 03:58      1606   s3://game/1586744327001/sample/allblueapp/80121/ap_80121_14_20200515115522_216.txt
[root@site ~]# s3cmd get s3://game/1586744327001/sample/allblueapp/80121/ap_80121_14_20200515115522_216.txt .
download: 's3://game/1586744327001/sample/allblueapp/80121/ap_80121_14_20200515115522_216.txt' -> './ap_80121_14_20200515115522_216.txt'  [1 of 1]
ERROR: S3 error: 404 (NoSuchKey)

于是加一下加一下 -d 选项来 debug 一下。发现依然是返回200,且也看不出有什么问题。于是去看了下 s3cmd 的源码,发现 s3cmd ls 只要 bucket 存在,就一定会返回200,不管要 ls 的 object 存不存在,于是做了个实验,去 ls 一个从来不存在的 object 发现,竟然也是200,OK,Fine。

感兴趣的话,可以去看下这块代码,确认一下。

https://github.com/s3tools/s3cmd/blob/master/S3/S3.py#L324

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值