0

我正在开发一个桌面 Java 应用程序。它需要检查我的 S3 服务器上的特定文件。

我不想下载整个文件来比较,我需要找出服务器中的文件是否比本地文件更新,然后下载并替换。

我不确定如何检查是否有更新的可用部分。

我听说过散列作为一种方法,但我对如何在两个方面(本地和通过 S3)实际做到这一点几乎没有经验

4

3 回答 3

1

获取远程文件的哈希值: 如何在 Amazon 的 S3 上获取文件的 md5sum

获取本地文件的哈希值: Getting a File's MD5 Checksum in Java

于 2013-01-29T20:54:57.667 回答
1

如果您也是最初在 S3 上创建文件的人,您可以在第一次ObjectMetadata使用 MD5(例如meta.setUserMetadata(mymap))存储自定义putObject(),然后使用s3.getObjectMetadata().

于 2014-03-27T23:07:28.587 回答
1

以编程方式比较大小 < 5 GB 的文件的 E-Tag。

计算本地文件的哈希:

String hash = DigestUtils.md5Hex(new FileInputStream(path));

获取 S3 对象的 Etag:获取S3 对象的 Etag已被 @dnault 提及

如果您按照上面的说明计算哈希,那么对于文件大小小于 5 GB 的所有情况,它应该是相同的。

如果文件大小大于 5 GB:Multi-part MD5

于 2017-04-14T22:21:07.343 回答