如何比较本地文件与Amazon s3文件

时间:2013-01-29 20:46:23

标签: java hash amazon-s3 compare updating

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

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

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

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

3 个答案:

答案 0 :(得分:2)

获取远程文件的哈希值: How to get the md5sum of a file on Amazon's S3

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

答案 1 :(得分:1)

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

计算本地文件的哈希:

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

获取S3对象的Etag:Get Etag of S3 Object @dnault已经提到

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

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

答案 2 :(得分:0)

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