rsync 一个超大文件夹“./attachments”过后,怎样检测两台服务器的这个“./attachments”文件夹一模一样 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
kisshere
V2EX    程序员

rsync 一个超大文件夹“./attachments”过后,怎样检测两台服务器的这个“./attachments”文件夹一模一样

  • nbsp;
  •   kisshere 2019-08-20 08:44:46 +08:00 3338 次点击
    这是一个创建于 2254 天前的主题,其中的信息可能已经有所发展或是发生改变。

    “./attachments ”文件夹约 2T,内部有几百万个文件,怎样检测这两个文件夹内部文件一模一样

    18 条回复    2019-08-20 14:14:24 +08:00
    i4oolish
        1
    i4oolish  
       2019-08-20 08:50:29 +08:00
    递归遍历,MD5 比对?
    vuuv
        2
    vuuv  
       2019-08-20 08:59:09 +08:00 via Android   2
    rsync -c 即可检查。
    shawndev
        3
    shawndev  
       2019-08-20 09:30:12 +08:00
    原本答案和 1 楼一样,看完 2 楼查了一下 manual 支持 2 楼。
    codingbaby
        4
    codingbaby  
       2019-08-20 09:56:00 +08:00
    md5sum ./attachments
    ThinkZ
        5
    ThinkZ  
       2019-08-20 10:03:05 +08:00   1
    难道不是再同步一次?如果不一致,还不是要重新同步一次
    dot2017
        6
    dot2017  
       2019-08-20 10:07:21 +08:00
    md5sum 并不适合检查文件夹,更适合文件
    Jeffrey4l
        7
    Jeffrey4l  
       2019-08-20 10:34:43 +08:00
    find . -type f -exec md5sum {} \; > FILES
    smallpython
        8
    smallpython  
       2019-08-20 10:40:04 +08:00
    把文件打成 tar 包
    看看 tar 包的 md5 值一样不一样
    lihongjie0209
        9
    lihongjie0209  
       2019-08-20 10:41:32 +08:00
    @smallpython #8 你想打包一个 2T 的文件夹?
    zeyexe
        10
    zeyexe  
       2019-08-20 10:48:21 +08:00
    @smallpython #8 不能保证两次打包的 md5 值是一样的。
    nullboy
        11
    nullboy  
       2019-08-20 10:52:17 +08:00
    rsync -avP ?
    geelaw
        12
    geelaw  
       2019-08-20 10:54:46 +08:00 via iPhone
    @lihongjie0209 #9 tar 可能是可以 O(1) 额外空间复杂度计算的,md5 是可以 O(1) 额外空间复杂度计算的,因此整个过程是可以流式计算的。

    真正的问题并不是计算时间,很可能 文件夹 到 tar 的映射不是 deterministic wrt 内容的,因为 tar 里面还存放了很多其他数据,而且文件的存放顺序也可能是灵活的。
    SingeeKing
        13
    SingeeKing  
    PRO
       2019-08-20 11:15:41 +08:00
    rclone check
    reus
        14
    reus  
       2019-08-20 11:37:01 +08:00
    -c, --checksum skip based on checksum, not mod-time & size

    用 rsync -c
    otakustay
        15
    otakustay  
       2019-08-20 12:38:59 +08:00
    2 个内容一模一样但是 chmod 不一样的文件是不是一样?
    2 个内容和 chmod 都一样但 mtime 不一样的文件是不是一样?
    vuuv
        16
    vuuv  
       2019-08-20 13:55:27 +08:00 via Android   1
    @ThinkZ #5 rsync 默认根据大小及时间快速判断文件是否需要同步,有较低可能出现内容不一致的情况(主要是不敢赌)。
    而-c 可以显著减小这个风险。如果还不放心,再上 md5+sha1 校验文件。
    常规要求文件安稳的做法 rsync -c 即可满足。
    smallpython
        17
    smallpython  
       2019-08-20 14:12:25 +08:00
    @zeyexe 我测试了
    随便 tar 了一个文件夹
    两次 tar 包的 MD5 值是一样的
    ritaswc
        18
    ritaswc  
       2019-08-20 14:14:24 +08:00
    1、是否存在文件 /文件夹
    2、两个文件都存在,对比文件大小是不是同一个数值
    3、如果文件大小是同一个数值,对比 sha1 或者 md5

    如果我是这个开发者 我会这样做
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5315 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 07:19 PVG 15:19 LAX 00:19 JFK 03:19
    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