Cloud Blob与本地文件同步

时间:2017-04-28 18:35:32

标签: c# azure synchronization azure-storage azure-storage-blobs

在我正在开发的桌面应用程序中,我希望有一个功能来存储和同步本地保存文件。基本上,我希望有一个同步按钮(或程序启动时自动执行),执行以下操作:

  • 下载azure存储帐户中比本地文件更新的所有blob(文件),或者不存在于本地保存文件夹中。
  • 上传本地保存文件夹中比azure storage blob更新的所有文件,或者它们不在存储帐户中。

基本上,我希望本地文件夹和存储帐户在同步结束时具有相同的文件;但只保留较新版本。

为此,我首先尝试通过DateTime比较它们;这是一个例外。每次我同步时,由于上传/下载日期时间所需的时间都会在几秒钟后关闭。因此,本地版本或云版本似乎总是比另一个更新;每当按下同步按钮时,引导程序找到要同步的内容。我们总是可以在比较时设置一个时间阈值,但这听起来并不像是一个有效的解决方案。

有没有办法通过时间比较来完成这项工作?或者有没有办法比较实际文件,看看文件是否已更改?还是其他任何解决方案?

注意:使用File.GetLastWriteTime()获取本地文件的时间,然后获取" Last-Modified"来自存储blob日期响应的标题。并使用DateTime.Compare()来比较它们。

1 个答案:

答案 0 :(得分:-2)

您可以使用Etag属性补充日期。每次blob修改时都会更新此属性。

这篇文章介绍了使用Etag管理blob: https://azure.microsoft.com/en-us/blog/managing-concurrency-in-microsoft-azure-storage-2/

您可以找到有关blob服务标头的更多详细信息,它可以帮助您执行同步: https://docs.microsoft.com/fr-fr/rest/api/storageservices/specifying-conditional-headers-for-blob-service-operations