怎样最快的方式检测两台服务器之间的某个图片完全一样?

2019 年 12 月 24 日
 kisshere

主服务器 A 有一张图片,备份服务器 B 要时刻抓取服务器 A 上的图片到 B,B 服务器抓取之前需要判断 A 服务器上的图片在 B 服务器上是否有一模一样的图片,那么,怎样以最快的方式判断 A 服务器山的该图片和 B 服务器上的该图片完全一样?

3800 次点击
所在节点    程序员
23 条回复
95Q75rQb83nwn2gF
2019 年 12 月 24 日
比较好奇为什么会不一样?
whileFalse
2019 年 12 月 24 日
如果每张图片都有单独的名字,只是有可能内容会变,可以尝试使用 If-Modified-Since 之类的方式。
不过我还是觉得你应该更详细地描述需求。
doveyoung
2019 年 12 月 24 日
不是太明白你的意思,是要对比两个服务器上的文件一样吗?
md5 计算一下再对比
also24
2019 年 12 月 24 日
首先,你这个 “抓取”,是走什么协议的?

http ? nfs ? ftp ? rsync ? 或者自己实现的私有协议?
terrywater
2019 年 12 月 24 日
md5 计算文件,看看值是否相同
terrywater
2019 年 12 月 24 日
云盘的秒传,
bigmomo
2019 年 12 月 24 日
哈希值呗。
zappos
2019 年 12 月 24 日
图片不要用单独的名字,就用它的 hash。单独的名字存数据库里。
vone
2019 年 12 月 24 日
如果是通过 http 传输的话可以使用 HTTP 协议中的 etag 和 if-none-match。
例如:
请求头包含 if-none-match: "1d4577fa453bc8b"
响应头为 etag: "1d4577fa453bc8b"
此时服务器会返回 304,代表文件未变化。
etag 值为 HTTP 协议的规范,服务端程序会自动返回。同步程序需要做的就是储存此值,等待第二次下载时在请求头的 if-none-match 中写入此值。
ZXCDFGTYU
2019 年 12 月 24 日
md5 一下文件不就解决了?
zcfnc
2019 年 12 月 24 日
点进来之前还以为是用图片识别像素点来判断呢。。。。
lihongjie0209
2019 年 12 月 24 日
既然是备份, 那就是文件级别的, 和文件中存储什么内容没关系.
基于 hash 或者是文件名或者是最后修改时间都可以做.

我推荐 rsync
DJQTDJ
2019 年 12 月 24 日
说好的图像识别文字识别呢?
怎么最后变成 HTTP 传输头和 MD5 了
wsbnd9
2019 年 12 月 24 日
md5sum 文件
qilishasha
2019 年 12 月 24 日
用文件码比对起来非常耗资源,数量级一大,就麻烦了。只能在存储的时候想办法了,比如那个啥 mongodb 的 gridfs 什么的,这样就省去了比对环节,而且同步起来也蛮方便的呀……
kisshere
2019 年 12 月 24 日
@terrywater
@wsbnd9 怎样在 http 请求中获取远程服务器文件的 MD5 值?
elevioux
2019 年 12 月 24 日
抓取是怎样抓取的呢?
http?
做备份的话,用 rsync 之类的方案更妥吧。
yoshiyuki
2019 年 12 月 24 日
定时调用 rsync,然后开启 rsync 的增量备份选项即可
beastk
2019 年 12 月 24 日
最快的应该是这样,B 抓取 A 图片时先对比 md5,如果没有匹配中,那么 A 在头部加入 md5,B 保存图片和 md5 入库。
hzgit
2019 年 12 月 24 日
摘要算法

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/631839

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX