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

时间:2017-01-31 14:27:46

标签: php amazon-web-services amazon-s3 synchronization aws-sdk

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

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

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

注意:

  1. 我也从here
  2. 尝试了这个
  3. 目前我正在使用AWS php sdk的第3版

1 个答案:

答案 0 :(得分:2)

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

它过去工作,来自v2 API docs

  

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

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

但是,在v3中,他们保留了S3Client::uploadDirectory()以获得API兼容性,但我认为Transfer::promise() just a wrapper,我们知道只是上传而没有任何同步。保持API兼容性但改变这样的行为对我来说似乎是一个非常糟糕的主意

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

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