问题描述
我已经上传了 5k+ 个文件夹,每个文件夹应该有一个文件和一个子文件夹(这个子文件夹然后包含各种文件)到 DigitalOcean Spaces(S3 存储)。
看起来有些上传失败(长话短说)。有没有办法使用 s3cmd
列出所有空文件夹?
解决方法
我在这里的评论是关于 Amazon S3,但同样适用于 DigitalOcean Spaces。
“文件夹”实际上并不存在于 S3 中。例如,您可以将文件上传到 invoices/january/inv1.txt
,S3 将神奇地创建 invoices
和 january
文件夹。然后,如果您删除该对象,这些文件夹将神奇地消失。因此,文件夹在对象“在”文件夹中时会自动出现。
可以通过创建一个与路径同名的零长度对象来创建一个空文件夹。例如,创建一个键为 invoices/
的零长度对象将强制显示一个文件夹,即使它是空的(因为它实际上不是空的!)。这是当人们单击“创建文件夹”按钮时 S3 管理控制台创建文件夹的方式。
因此,当您询问如何“列出所有空文件夹”时,这实际上取决于这些文件夹最初是如何创建的,或者它们是否实际上是创建的!很可能从一开始就从未创建过这些文件夹。
如果您的目标是修复失败的上传,您可以使用 s3cmd sync
函数,该函数可以重新上传对象,但其智能程度足以仅复制目标中不存在或已更改的文件。