V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
kisshere
V2EX  ›  程序员

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

  •  
  •   kisshere · Dec 24, 2019 · 3879 views
    This topic created in 2316 days ago, the information mentioned may be changed or developed.

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

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

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

    我推荐 rsync
    DJQTDJ
        13
    DJQTDJ  
       Dec 24, 2019
    说好的图像识别文字识别呢?
    怎么最后变成 HTTP 传输头和 MD5 了
    wsbnd9
        14
    wsbnd9  
       Dec 24, 2019
    md5sum 文件
    qilishasha
        15
    qilishasha  
       Dec 24, 2019
    用文件码比对起来非常耗资源,数量级一大,就麻烦了。只能在存储的时候想办法了,比如那个啥 mongodb 的 gridfs 什么的,这样就省去了比对环节,而且同步起来也蛮方便的呀……
    kisshere
        16
    kisshere  
    OP
       Dec 24, 2019
    @terrywater
    @wsbnd9 怎样在 http 请求中获取远程服务器文件的 MD5 值?
    elevioux
        17
    elevioux  
       Dec 24, 2019
    抓取是怎样抓取的呢?
    http?
    做备份的话,用 rsync 之类的方案更妥吧。
    yoshiyuki
        18
    yoshiyuki  
       Dec 24, 2019
    定时调用 rsync,然后开启 rsync 的增量备份选项即可
    beastk
        19
    beastk  
       Dec 24, 2019 via iPhone
    最快的应该是这样,B 抓取 A 图片时先对比 md5,如果没有匹配中,那么 A 在头部加入 md5,B 保存图片和 md5 入库。
    hzgit
        20
    hzgit  
       Dec 24, 2019
    摘要算法
    cmingxu
        21
    cmingxu  
       Dec 24, 2019
    MD5 取摘要,bloom filter 判断是否存在
    smartjohn
        22
    smartjohn  
       Dec 24, 2019
    RSYNC 了解一下
    piloots
        23
    piloots  
       Dec 24, 2019
    7#正解
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   992 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 73ms · UTC 19:30 · PVG 03:30 · LAX 12:30 · JFK 15:30
    ♥ Do have faith in what you're doing.