在Red Hat Linux上使用S3FS和PHP将文件保存到amazons S3,并且文件被重写而不需要任何东西


Saving files to amazons S3 using S3FS with PHP on Red Hat Linux and files being over written with nothing

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

我们有一台Red Hat Linux服务器,当我们注意到这个问题时,我们在服务器上保存了一个正在测试的产品。当我们去解决这个问题时,我们将该产品移到了Ubuntu实例中,我们不再有这个问题。

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

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

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

S3将操作视为整个文件。要么文件被完整上传,要么根本不存在。

s3fs试图创建一个到非卷的接口,以便您可以将其装载到文件系统上。但在隐蔽的情况下,它会将您访问的每个文件复制到本地文件系统,并将其存储在临时目录中。虽然您通常可以使用s3fs执行整个文件操作(复制、删除等),但尝试直接从s3fs打开文件到块级别的操作将以糟糕的结局告终。

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