在Red Hat Linux上使用带有PHP的S3FS将文件保存到amazon S3,并且没有任何文件被覆盖

时间:2015-03-30 16:17:40

标签: php amazon-ec2 amazon-s3 s3fs

使用S3FS将文件写入S3时,如果在写入文件时访问该文件,则会删除该文件中的数据。

我们有一个Red Hat Linux服务器,当我们注意到这个问题时,我们保留了一个我们进行beta测试的产品。当我们解决问题时,我们将该产品移至Ubuntu实例,我们不再有这个问题。

我们为想要Red Hat并将一些代码移动到该服务器的客户端设置了一个服务器,该服务器现在正在进行覆盖问题。

1 个答案:

答案 0 :(得分:0)

您描述的行为是有道理的。需要对S3如何工作与标准卷进行一些解释。

OS可以在块级别读取/写入标准卷。多个进程可以访问该文件,但需要一些锁来防止损坏。

S3将操作视为整个文件。文件是完整上传还是根本不存在。

s3fs尝试创建一个不是卷的东西的接口,以便您可以将它挂载到文件系统上。但在幕后,它会将您访问的每个文件复制到本地文件系统并将其存储在临时目录中。虽然您通常可以使用s3fs(复制,删除等)执行整个文件操作,但尝试直接从s3fs打开文件到块级操作将会很糟糕。

还有其他选择。如果您可以重新编写代码以从s3中提取和推送文件可以正常工作,但听起来您需要的东西更像NFS。