怎样最快的方式检测两台服务器之间的某个图片完全一样? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
kisshere
V2EX    程序员

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

  •  
  •   kisshere 2019-12-24 13:35:30 +08:00 3696 次点击
    这是一个创建于 2185 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    23 条回复    2019-12-24 19:40:26 +08:00
    Dex7er
        1
    Dex7er  
       2019-12-24 13:56:24 +08:00
    比较好奇为什么会不一样?
    whileFalse
        2
    whileFalse  
       2019-12-24 14:02:22 +08:00
    如果每张图片都有单独的名字,只是有可能内容会变,可以尝试使用 If-Modified-Since 之类的方式。
    不过我还是觉得你应该更详细地描述需求。
    doveyoung
        3
    doveyoung  
       2019-12-24 14:05:00 +08:00
    不是太明白你的意思,是要对比两个服务器上的文件一样吗?
    md5 计算一下再对比
    also24
        4
    also24  
       2019-12-24 14:10:11 +08:00 via Android
    首先,你这个 “抓取”,是走什么协议的?

    http ? nfs ? ftp ? rsync ? 或者自己实现的私有协议?
    terrywater
        5
    terrywater  
       2019-12-24 14:10:25 +08:00
    md5 计算文件,看看值是否相同
    terrywater
        6
    terrywater  
       2019-12-24 14:10:54 +08:00
    云盘的秒传,
    bigmomo
        7
    bigmomo  
      &bsp;2019-12-24 14:11:58 +08:00
    哈希值呗。
    zappos
        8
    zappos  
       2019-12-24 14:13:56 +08:00 via Android
    图片不要用单独的名字,就用它的 hash。单独的名字存数据库里。
    vone
        9
    vone  
       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 中写入此值。
    ZXCDFGTYU
        10
    ZXCDFGTYU  
       2019-12-24 14:51:21 +08:00
    md5 一下文件不就解决了?
    zcfnc
        11
    zcfnc  
       2019-12-24 16:30:43 +08:00
    点进来之前还以为是用图片识别像素点来判断呢。。。。
    lihongjie0209
        12
    lihongjie0209  
       2019-12-24 16:37:46 +08:00
    既然是备份, 那就是文件级别的, 和文件中存储什么内容没关系.
    基于 hash 或者是文件名或者是最后修改时间都可以做.

    我推荐 rsync
    DJQTDJ
        13
    DJQTDJ  
       2019-12-24 16:42:18 +08:00
    说好的图像识别文字识别呢?
    怎么最后变成 HTTP 传输头和 MD5 了
    wsbnd9
        14
    wsbnd9  
       2019-12-24 16:43:41 +08:00
    md5sum 文件
    qilishasha
        15
    qilishasha  
       2019-12-24 16:45:26 +08:00
    用文件码比对起来非常耗资源,数量级一大,就麻烦了。只能在存储的时候想办法了,比如那个啥 mongodb 的 gridfs 什么的,这样就省去了比对环节,而且同步起来也蛮方便的呀……
    kisshere
        16
    kisshere  
    OP
       2019-12-24 16:58:13 +08:00
    @terrywater
    @wsbnd9 怎样在 http 请求中获取远程服务器文件的 MD5 值?
    elevioux
        17
    elevioux  
       2019-12-24 17:18:51 +08:00
    抓取是怎样抓取的呢?
    http?
    做备份的话,用 rsync 之类的方案更妥吧。
    yoshiyuki
        18
    yoshiyuki  
       2019-12-24 17:20:48 +08:00
    定时调用 rsync,然后开启 rsync 的增量备份选项即可
    beastk
        19
    beastk  
       2019-12-24 17:24:26 +08:00 via iPhone
    最快的应该是这样,B 抓取 A 图片时先对比 md5,如果没有匹配中,那么 A 在头部加入 md5,B 保存图片和 md5 入库。
    hzgit
        20
    hzgit  
       2019-12-24 17:42:16 +08:00
    摘要算法
    cmingxu
        21
    cmingxu  
       2019-12-24 18:48:31 +08:00
    MD5 取摘要,bloom filter 判断是否存在
    smartjohn
        22
    smartjohn  
       2019-12-24 18:52:00 +08:00
    RSYNC 了解一下
    piloots
        23
    piloots  
       2019-12-24 19:40:26 +08:00
    7#正解
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1369 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 17:03 PVG 01:03 LAX 09:03 JFK 12:03
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86