主服务器 A 有一张图片,备份服务器 B 要时刻抓取服务器 A 上的图片到 B,B 服务器抓取之前需要判断 A 服务器上的图片在 B 服务器上是否有一模一样的图片,那么,怎样以最快的方式判断 A 服务器山的该图片和 B 服务器上的该图片完全一样?
|  |      1Dex7er      2019-12-24 13:56:24 +08:00 比较好奇为什么会不一样? | 
|      2whileFalse      2019-12-24 14:02:22 +08:00 如果每张图片都有单独的名字,只是有可能内容会变,可以尝试使用 If-Modified-Since 之类的方式。 不过我还是觉得你应该更详细地描述需求。 | 
|  |      3doveyoung      2019-12-24 14:05:00 +08:00 不是太明白你的意思,是要对比两个服务器上的文件一样吗? md5 计算一下再对比 | 
|  |      4also24      2019-12-24 14:10:11 +08:00 via Android 首先,你这个 “抓取”,是走什么协议的? http ? nfs ? ftp ? rsync ? 或者自己实现的私有协议? | 
|  |      5terrywater      2019-12-24 14:10:25 +08:00 md5 计算文件,看看值是否相同 | 
|  |      6terrywater      2019-12-24 14:10:54 +08:00 云盘的秒传, | 
|  |      7bigmomo      2019-12-24 14:11:58 +08:00 哈希值呗。 | 
|      8zappos      2019-12-24 14:13:56 +08:00 via Android 图片不要用单独的名字,就用它的 hash。单独的名字存数据库里。 | 
|  |      9vone      2019-12-24 14:14:30 +08:00 如果是通过 http 传输的话可以使用 HTTP 协议中的 etag 和 if-none-match。 例如: 请求头包含 if-none-match: "1d4577fa453bc8b" 响应头为 etag: "1d4577fa453bc8b" 此时服务器会返回 304,代表文件未变化。 etag 值为 HTTP 协议的规范,服务端程序会自动返回。同步程序需要做的就是储存此值,等待第二次下载时在请求头的 if-none-match 中写入此值。 | 
|      10ZXCDFGTYU      2019-12-24 14:51:21 +08:00 md5 一下文件不就解决了? | 
|  |      11zcfnc      2019-12-24 16:30:43 +08:00 点进来之前还以为是用图片识别像素点来判断呢。。。。 | 
|      12lihongjie0209      2019-12-24 16:37:46 +08:00 既然是备份, 那就是文件级别的, 和文件中存储什么内容没关系. 基于 hash 或者是文件名或者是最后修改时间都可以做. 我推荐 rsync | 
|  |      13DJQTDJ      2019-12-24 16:42:18 +08:00 说好的图像识别文字识别呢? 怎么最后变成 HTTP 传输头和 MD5 了 | 
|  |      14wsbnd9      2019-12-24 16:43:41 +08:00 md5sum 文件 | 
|  |      15qilishasha      2019-12-24 16:45:26 +08:00 用文件码比对起来非常耗资源,数量级一大,就麻烦了。只能在存储的时候想办法了,比如那个啥 mongodb 的 gridfs 什么的,这样就省去了比对环节,而且同步起来也蛮方便的呀…… | 
|  |      16kisshere OP | 
|  |      17elevioux      2019-12-24 17:18:51 +08:00 抓取是怎样抓取的呢? http? 做备份的话,用 rsync 之类的方案更妥吧。 | 
|  |      18yoshiyuki      2019-12-24 17:20:48 +08:00 定时调用 rsync,然后开启 rsync 的增量备份选项即可 | 
|  |      19beastk      2019-12-24 17:24:26 +08:00 via iPhone 最快的应该是这样,B 抓取 A 图片时先对比 md5,如果没有匹配中,那么 A 在头部加入 md5,B 保存图片和 md5 入库。 | 
|      20hzgit      2019-12-24 17:42:16 +08:00 摘要算法 | 
|      21cmingxu      2019-12-24 18:48:31 +08:00 MD5 取摘要,bloom filter 判断是否存在 | 
|      22smartjohn      2019-12-24 18:52:00 +08:00 RSYNC 了解一下 | 
|      23piloots      2019-12-24 19:40:26 +08:00 7#正解 |