好的,首先,我知道S3没有“目录”,它们都是具有相同关键字前缀的对象,名称中有斜杠.因此,不需要评论或回答S3没有目录!
尽管,很多软件都在“检测”作为目录中带有斜杠的键,而我们使用的SFTP服务器软件就是其中之一。我们托管一个SFTP服务器,它使用AWS S3作为“文件系统”,其中有一个带有“目录”的桶,而桶根目录中的每个目录都是一个SFTP用户主目录。
问题是AWS正在删除空的“目录”(以斜杠结尾的零字节对象),因此如果SFTP用户删除所有文件(或尚未收到任何文件),AWS将删除“目录”,然后当用户试图连接到目录时出现错误。
一个明显的解决方案是添加一个“阻止程序”文件,例如readme.txt
或类似于“目录”的文件,这样就有了一些东西,但是大多数客户端似乎也删除了这些文件.还有一些其他的东西可能“锁定”(例如,对象锁)文件被删除,但这反过来会导致错误的SFTP客户端,如果他们试图删除所有文件,我们希望避免抛出错误(并显示不必要的文件).
那么,有什么方法可以阻止AWS S3删除空的“目录”呢?
发布于 2021-11-29 07:58:20
如果您通过s3api
(而不是s3
)创建目录,它将不会被删除。
例如,
aws s3api put-object --bucket mybucket --key home/user1/
然后,您可以从这个目录中复制和删除文件。
我不知道SFTP是如何工作的,但如果在AWS控制台或WinSCP中单击"Create文件夹“按钮,就会发生这种情况。我认为SFTP也有类似的地方。
https://stackoverflow.com/questions/70150929
复制相似问题