在 Red Hat Linux 上使用带有 PHP 的 S3FS 将文件保存到亚马逊 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 服务器,当我们注意到这个问题时,我们在上面保存了我们正在 Beta 测试的产品。当我们去解决这个问题时,我们将该产品移动到一个 Ubuntu 实例,我们不再有那个问题。

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

您描述的行为是有道理的。需要稍微解释一下 S3 与标准卷的工作原理。

一个标准卷可以在块级 read/written 乘以 OS。多个进程可以访问该文件,但需要一些锁以防止损坏。

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

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

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