V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kisshere
V2EX  ›  程序员

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

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

    “./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  
       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   ·   实用小工具   ·   917 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 20:27 · PVG 04:27 · LAX 12:27 · JFK 15:27
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.