【问题标题】:When using s3fs, 'ls' command shows nothing使用 s3fs 时,“ls”命令不显示任何内容
【发布时间】:2013-02-13 04:54:43
【问题描述】:

我一直在尝试将 Amazon S3 设置为我的文件的备份服务。我想通过将它作为驱动器安装在我的 ubuntu 安装上来使用该服务,s3fs project 应该可以实现这一点。但我遇到了一些麻烦。我相信我已经成功安装了 fuse 和 s3fs。当我安装驱动器时,我没有收到任何错误;但是,当我进入目录并发出“ls”命令时,什么也没有发生。如果我使用如下命令创建测试文件:

touch file.test

文件显示在 aws 控制台中。但是我无法查看存储桶中已经存在的文件,也无法使用“cd”命令导航到子目录。我在项目谷歌论坛中做了一些嗅探,我想我发现 s3fs 看不到 s3 存储桶的任何内容除非这些文件或目录是使用 s3fs 创建的。有没有其他人遇到过这个问题?这真的是这个项目的设计方式吗?这是一个错误吗?或者有没有办法解决这个问题?

【问题讨论】:

    标签: amazon-web-services amazon-s3 s3fs


    【解决方案1】:

    S3FS 使用特殊的“隐藏”零字节文件来表示目录,因为 S3 并不真正支持目录。如果您在已安装的 s3fs 存储桶上尝试 mkdir,然后使用 AWS 文件浏览器,您应该会看到这一点。如果您的 S3 存储桶包含不是由 S3FS 创建的目录结构,则 S3FS 将无法识别该结构。 S3FS 仅适用于仅使用 S3FS 操作的存储桶。

    在尝试将 s3fs 用于我正在从事的项目后,我得出结论,最好直接暴露于 S3 的限制,而不是使用试图隐藏这些限制的东西。

    【讨论】:

    • 感谢您非常明确的回答!我认为可能最终也不会使用 s3fs。我找到的替代方法是s3 tools。除了上传速度很慢之外,它们还可以很好地满足我的目的,因为我在这里真正想做的是使用 s3 作为备份。但是我不得不说我还没有完全理解为什么亚马逊设计他们的 s3 服务有这么多的限制——我敢肯定这是我自己的无知。
    • 使用 s3fs,根据我的经验,您还可以“mkdir ”并且存储桶中该伪目录下的文件对 s3fs 变得神奇可见,因为它现在知道它应该在那里检查文件,所以它会发现它们......但仍然最好在桶仅由 s3fs 写入的情况下使用 s3fs(从其他地方读取很好)。随着时间的推移,我怀疑你会看到 S3 中的一些“限制”实际上是它的一些优势。
    【解决方案2】:

    无法使用 ls 命令访问 s3:

    ls: reading directory /mnt/s3/: Operation not permitted
    

    仅适用于 s3cmd ls。

    【讨论】:

    • 使用sudo ls /mnt/s3/
    • 还要确保您的 AWS S3 凭证具有策略访问权限以执行您需要执行的操作。我的没有列出,因为我的访问凭证限制了它的访问策略范围。
    猜你喜欢
    • 2020-05-23
    • 2012-01-06
    • 1970-01-01
    • 2020-08-29
    • 1970-01-01
    • 1970-01-01
    • 2021-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多