Amazon S3 PHP SDK/API 中的同步真的是同步操作吗?



Amazon php sdk (http://docs.aws.amazon.com/aws-sdk-php/v3/guide/service/s3-transfer.html) 同步操作是使用上述链接方法执行的。我已经成功地编码和配置了它们,但是在每次调用该方法时,存储桶下文件的上次修改日期都会更新为最新时间,因为这些文件未在本地修改到上一个同步调用。

我想知道这是同步操作还是只是覆盖从本地目录发送的任何操作?

为什么这很重要,因为我们计划在服务器和 S3 存储桶之间同步文件。使用 S3 存储桶作为备份存储,如果发生任何中断,我们可以以相反的方式同步(S3 存储桶 -> 服务器),以使丢失的数据片段在我们的服务器中可用。

笔记:

  1. 我也从这里尝试过这个
  2. 目前我使用的是 AWS php sdk 的第 3 版

不幸的是,我相信答案是否定的,在使用Transfer类时,我也看到每个文件的完整上传。

它曾经从v2API文档中工作:

客户端的uploadDirectory()方法将比较 Amazon S3 存储桶中内容的本地目录,并且仅 传输已更改的文件。

完美,这就是我们想要的!

但是v3,我猜他们保留了S3Client::uploadDirectory()API 兼容性,但它只是一个包装器Transfer::promise(),正如我们所知,它只是上传而没有任何同步。保持 API 兼容性但改变这样的行为对我来说似乎是一个非常糟糕的主意

我最终不得不为我的项目添加支持,以使用 AWS CLI 工具进行实际上传,该工具确实完美地支持同步。远非理想。

如果有办法使用Transfer类轻松同步而不是完全上传,我希望有人能证明我错了。

最新更新