我已经使用s3fs成功安装了我的存储桶,但是我无法看到使用PHP库创建的对象(子目录中的文件)。如果我在根级别添加文件,我可以看到。如果我在根级别创建文件,我可以看到。如果我创建一个目录,我可以在其中创建项目,但是我看不到我之前创建的目录和对象。
如何查看之前创建的项目?我真的想要创建一个EBS,安装它,并从S3中获取这些东西。我希望像这样安装S3可以轻松实现。
由于我只是想将对象从S3移动到EBS,我也一直在尝试使用s3sync。没运气。当s3sync尝试创建目录时,它创建了一些奇怪的东西......
---x-wx--T 1 root root 272 Oct 21 15:25 /photos/0
./s3sync.rb:638:in `initialize': No such file or directory - /photos/0.s3syncTemp (Errno::ENOENT)
HELP !!!
感谢您的帮助。
汤姆
答案 0 :(得分:1)
这是因为子目录没有分配ACL。 我通过在S3上创建一个带有public-read权限/ acl的子目录对象解决了这个问题。
e.g。 $s3->putObjectString("", 'bucketName', 'directoryName/', S3::ACL_PUBLIC_READ);
答案 1 :(得分:1)
我听说如果您使用S3FS,那么您需要使用该接口执行所有文件事务。使用PHP将文件放入存储桶可能会正确添加它们,但由于它们未使用S3FS添加,因此它们可能在您安装的驱动器上不可见。
我有一个用于Web备份的已安装S3FS系统,并且备份脚本不会创建所有这些冗余文件夹和文件,但是会从其他进程中遗留下来。这些文件都不能使用Transmit或其他S3访问工具查看,只有在Amazon AWS控制台上才能看到存储桶的真实内容。
看起来你已经触及了ACL的另一个问题。
我建议做一个simmilar进程但是使用S3FS通过命令行或s3Fox传输文件,看它是否产生相同的结果。