有什么能对整个分区的文件进行 checksum 计算、存储和校验的工具吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wudicgi
V2EX    问与答

有什么能对整个分区的文件进行 checksum 计算、存储和校验的工具吗?

  •  
  •   wudicgi 2022-02-23 10:45:54 +08:00 2749 次点击
    这是一个创建于 1337 天前的主题,其中的信息可能已经有所发展或是发生改变。
    需要的功能:
    - 选择一个分区,能计算所有文件的 SHA-1 或 MD5 校验值
    - 文件路径和校验值可以保存到一个纯文本文件中
    - 之后打开这个文件,可以校验部分或所有文件
    - (可选) 能检测到文件的新增、删除并更新校验值存储文件就更好了

    在 Softpedia 上搜过了,在 AlternativeTo 上也看过了十多款 wxChecksums 的替代品
    https://alternativeto.net/software/wxchecksums/

    没找到一个能满足需求的

    不知道是我没找到,还是找错方向了
    我感觉有这种工具的话,磁盘 1:1 备份时,检查两个磁盘内容是否一致的开销也能低一些,否则每次要比只能全盘比较
    17 条回复    2025-08-10 22:29:44 +08:00
    julyclyde
        1
    julyclyde  
       2022-02-23 12:40:34 +08:00
    算 checksum 也需要读整个数据的,所以其实开销没什么区别
    loading
        2
    loading  
       2022-02-23 12:51:47 +08:00
    只算现有文件效率更高啊。何必舍近求远。
    neteroster
        3
    neteroster  
       2022-02-23 12:58:31 +08:00 via Android
    了解一下 snapraid ?
    wudicgi
        4
    wudicgi  
    OP
       2022-02-23 13:01:44 +08:00
    我现在备份数据主要靠磁盘离线备份,同样的数据用 2 块磁盘存 2 份
    有点担心长时间放置后,文件内容中的某些位可能会改变
    存一份 checksum 的话,之后可以验证用
    neteroster
        5
    neteroster  
       2022-02-23 13:03:47 +08:00 via Android
    另外如果是 Linux ,你说的 1 和 2 可以这样实现

    find . -type f -print0 | sort -z | xargs -r0 sha256sum > sha256SumOutput

    校验的话考虑用 diff ?
    neteroster
        6
    neteroster  
       2022-02-23 13:06:45 +08:00 via Android   1
    @wudicgi #4

    你这个需求就是用 snapraid 或者 zfs 比较合适,验证的时候 scrub 一遍就知道所有文件的完整性情况
    wudicgi
        7
    wudicgi  
    OP
       2022-02-23 13:14:48 +08:00
    @neteroster 可能是用些专用工具好些。现在为了自由度高,都是用的 NTFS + 开启 BitLocker
    所以就直接去找图形界面的 checksum 工具了
    wudicgi
        8
    wudicgi  
    OP
       2022-02-23 13:27:07 +08:00
    @neteroster 换 ZFS 之类带完整性校验和文件系统现在对我来说可行性不高,还是打算继续用 NTFS
    不过你启发我应该换一个思路,不能仅仅是检查文件的完整性,如果有问题最好能修复
    我其实能损失一些空间来存储额外的校验信息
    dingwen07
        9
    dingwen07  
       2022-02-23 13:30:30 +08:00
    wudicgi
        10
    wudicgi  
    OP
       2022-02-23 14:17:32 +08:00
    顺藤摸瓜找到个 RHash, 满足主贴描述的所有需求
    https://alternativeto.net/software/rhash/about/
    https://sourceforge.net/projects/rhash/

    跨平台的一个命令行工具,虽然没有图形界面但用法挺简单的
    wudicgi
        11
    wudicgi  
    OP
       2022-02-23 14:19:53 +08:00
    RHash 是在 Hash Tools 的 AlternativeTo 页面中发现的
    https://alternativeto.net/software/hashtools/

    之前在 wxChecksums 的页面中没被列出来
    Kagari
        12
    Kagari  
       2022-02-23 15:14:05 +08:00
    rapidcrc
    HashCheck
    Md5Checker
    wudicgi
        13
    wudicgi  
    OP
       2022-02-23 16:53:04 +08:00
    @Kagari 去查了下,这几个功能都不够用,而且年代久远了
    RapidCRC 2005 年 添加目录和所有子目录内所有文件的功能没有
    HashCheck 2016 年 是个 shell 扩展,不方便用,功能也远不够
    Md5Checker 2007 年 添加目录和所有子目录内所有文件的功能没有
    neteroster
        14
    neteroster  
       2022-06-18 15:42:15 +08:00 via Android
    虽然过了这么久,最近还是对 Windows 下的完整性校验有需要,想问问楼主 @wudicgi 。看起来 RHash 确实不错,想知道小文件多的话性能咋样,因为我之前自己也写了个工具,但是大量小文件性能很差。
    wudicgi
        15
    wudicgi  
    OP
       2022-06-18 17:56:03 +08:00
    @neteroster 我用的频率很低,而且用 RHash 的场景也没有大量小文件,所以不太清楚这方面性能怎么样
    而且估计即使出现性能不佳的情况,我可能也会把它归于机械硬盘而不是软件
    totoro625
        16
    totoro625  
       2022-07-19 23:51:56 +08:00   1
    最近也在看这方便的内容,TeraCopy ( Windows 软件)
    可以实现分区上右击进行测试,然后生成 md5 的校验记录并保存到文件
    文件路径和校验值都在一个.md5 文件内
    直接双击打开即可自动进行文件校验
    但是只能看到文件的修改(校验错误)、删除(文件丢失)、无法识别到文件新增、无法直接更新校验值(需要再次点击测试)

    另外 snapraid 可以生成多份不可读的私有校验文件,多份不可读的私有备份包
    charles0
        17
    charles0  
       72 天前
    FastCopy 的 FcHash 命令行工具也能用来递归地计算哈希值,支持 xxHash3-128
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3196 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 11:16 PVG 19:16 LAX 04:16 JFK 07:16
    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