如何使用 s3cmd 列出所有空文件夹

How can I list all empty folders with s3cmd

我已经上传了5k+个文件夹,每个文件夹应该有一个文件和一个子文件夹(这个子文件夹然后包含各种文件)到DigitalOcean Spaces(S3存储)。

看起来有些上传失败了(长话短说)。有没有办法使用 s3cmd 列出所有空文件夹?

我在这里的评论是关于 Amazon S3 的,但应该同样适用于 DigitalOcean Spaces。

'Folders' 实际上并不存在于 S3 中。例如,您可以将文件上传到 invoices/january/inv1.txt,S3 将神奇地创建 invoicesjanuary 文件夹。然后,如果您删除该对象,这些文件夹将神奇地消失。因此,当对象 'in' 是 .

时, 文件夹会自动出现

可以通过创建一个与路径同名的零长度对象来创建一个空文件夹。例如,创建一个键为 invoices/ 的零长度对象将强制出现一个文件夹,即使它是空的(因为它实际上不是空的!)。这就是人们单击“创建文件夹”按钮时 S3 管理控制台创建文件夹的方式。

因此,当您询问如何“列出所有空文件夹”时,这实际上取决于这些文件夹最初是如何创建的,或者它们是否真的被创建了!很可能一开始就没有创建这些文件夹。

如果您的目标是修复失败的上传,您可以使用 s3cmd sync 功能,该功能可以重新上传对象,但它足够智能,可以只复制目标中不存在的文件,或者改变了。