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

把一个巨大的巨多文件的文件夹从一个磁盘移动到另一个磁盘,如何验证没有丢失或者损失文件?

  •  
  •   movq · Dec 20, 2020 · 7822 views
    This topic created in 1966 days ago, the information mentioned may be changed or developed.

    Wky5FZAoUbG8auE

    YAhSZyfNVkoTrDF

    上面两个截图,是我把这个文件夹从一个机械盘复制到另一个机械盘之后查看的文件夹信息

    第一张图和第二张图,文件数目也是一样的,但是两张图的文件夹大小不一样(区别在 2MB 左右),这种有没有可能是移动过程中损坏了什么文件之类的?(移动过程中并没有提示什么)

    42 replies    2020-12-26 08:41:42 +08:00
    troyl
        1
    troyl  
       Dec 20, 2020 via iPhone   ❤️ 2
    rsync
    nrtEBH
        2
    nrtEBH  
       Dec 20, 2020   ❤️ 2
    想要 GUI 的话可以试试
    FreeFileSync
    leafre
        3
    leafre  
       Dec 20, 2020 via iPhone
    ctrl c ctrl v
    MicroBotter
        4
    MicroBotter  
       Dec 20, 2020
    chemsum 遍历一遍?
    vcfghtyjc
        5
    vcfghtyjc  
       Dec 20, 2020
    二分查找找到第一个不同的文件 /文件夹
    terence4444
        6
    terence4444  
       Dec 20, 2020 via iPhone
    我记得以前有人用 BT 跨盘复制文件……
    Duolingo
        7
    Duolingo  
       Dec 20, 2020 via Android
    机械盘的话可能是分区簇大小不一致造成的
    0TSH60F7J2rVkg8t
        8
    0TSH60F7J2rVkg8t  
       Dec 20, 2020   ❤️ 3
    这个占用还和磁盘分区格式有关,比如,簇的大小,比如分配单元大小,假设一个机械硬盘是 4k,一个是 512 字节,那么你拷贝的时候,文件实际大小一样,但是两个盘的占用却不一样,4k 的会占用多一些,512 字节的会占用少一些。所以楼主这问题很有可能是分牌单元大小不同导致的,而并不是文件损坏。

    实在不放心就 checksum 算一遍吧。
    neteroster
        9
    neteroster  
       Dec 20, 2020
    wsqstar
        10
    wsqstar  
       Dec 20, 2020   ❤️ 2
    真真正正是一个好问题
    用 win 经常出现缺失文件的情况 还不报错
    所以我一般是把平常的文件都用云盘备份
    防止抽风
    代码啥的还是用 git
    实在不行就 check sum
    coderluan
        11
    coderluan  
       Dec 20, 2020   ❤️ 2
    只是大小的话, 直接拿 beyond compare 之类的软件, 对比下两个目录就完了, 非常快.
    loading
        12
    loading  
       Dec 20, 2020 via Android
    windows 下我用 fastcopy 带检验功能,osx 目前我还没有这个需求。
    virtualworld
        13
    virtualworld  
       Dec 20, 2020
    win 上用专门的拷贝软件 fastcopy teracopy 啥的都带校验。TC 也有复制验证。
    hadoop
        14
    hadoop  
       Dec 20, 2020 via Android
    这几十 g 就是算一遍 md5 啥的也很快了吧
    shyling
        15
    shyling  
       Dec 20, 2020
    finder copy 的时候应该带了验证 checksum 吧。。。

    这种一般是因为磁盘簇大小不一样导致的。。
    uhian
        16
    uhian  
       Dec 20, 2020
    beyond compare
    annielong
        17
    annielong  
       Dec 20, 2020
    只要不是复制粘贴,用第三方工具基本都自带效验的
    hantsy
        18
    hantsy  
       Dec 20, 2020
    文件不都是可以用 rsa,sha,md5 等等 可以检测一致性?
    mangogeek
        19
    mangogeek  
       Dec 20, 2020
    并不一定是丢失了文件,文件本身大小和文件占用磁盘大小是两码事,并且在不同的文件系统上可能不一样。
    snw
        20
    snw  
       Dec 20, 2020 via Android   ❤️ 1
    上面说 checksum 的,我曾经遇到过文件内容没问题但编码问题导致拷贝后文件名错乱的情况
    leaves7i
        21
    leaves7i  
       Dec 20, 2020
    确实很麻烦,尤其是手机和电脑传文件,莫名其妙就一堆照片和视频内容丢失了
    (文件还在,但是打不开,用软件看里面的数据都丢失了)
    所以我现在手机传文件是先打包成无压缩的 zip 包或者 7z 包再传
    jin7
        22
    jin7  
       Dec 20, 2020
    直接用 beyond compare 传送文件, 又好又快
    JCZ2MkKb5S8ZX9pq
        23
    JCZ2MkKb5S8ZX9pq  
       Dec 20, 2020
    @coderluan

    好久没在 mac 上用了,这个 beyond compare 是不是类似 totalcmd 里的比较文件夹?有时候手动备份倒是很需要那个功能。另外最好能跳过.git 目录,totalcmd 不能选择跳过哪些目录,这个可以嘛?
    z761031
        24
    z761031  
       Dec 20, 2020
    打个压缩包,复制,然后比对压缩包的 md5
    Livid
        25
    Livid  
    MOD
    PRO
       Dec 20, 2020
    rsync 跑两遍。
    Felldeadbird
        26
    Felldeadbird  
       Dec 20, 2020
    有可能是内存有问题。我之前就遇到过,A 文件哈希值是 1 .复制到 B 硬盘,或者其他地方。B 的哈希值就成 2 了。 后面换了内存就没这个问题了。

    至于验证的话,我觉得用同步软件去复制 是最好的方法了。rsync
    yzbythesea
        27
    yzbythesea  
       Dec 20, 2020
    rsync 正解
    coderluan
        28
    coderluan  
       Dec 20, 2020
    @JCZ2MkKb5S8ZX9pq 带过滤器的, 应该可以.
    w4ter
        29
    w4ter  
       Dec 20, 2020
    有个软件叫 Paragon Hard Disk Manager,整个硬盘无损备份还原,贼好用
    JeepLi
        30
    JeepLi  
       Dec 20, 2020
    md5sum
    nuk
        31
    nuk  
       Dec 20, 2020
    已经拷好的可以用 mtree 来对比,可以对比你想对比的一切东西
    包括,权限,时间戳,文件名,哈希,空文件夹。。
    ungrown
        32
    ungrown  
       Dec 20, 2020
    @terence4444 #6 现在有成熟的软件了,resilo 微力同步 之类的
    fox0001
        33
    fox0001  
       Dec 20, 2020
    可以考虑古老的 ghost
    coymail
        34
    coymail  
       Dec 20, 2020
    或许和软链接硬链接有关系,不同工具处理方式不一样,可以考虑用 rsync
    Licsber
        35
    Licsber  
       Dec 20, 2020
    rsync -c 跑两遍 我最近也在干这样的事情 表示现在对 macOS 的拷贝很不信任

    搞不懂复制逻辑 finder 看起来像是先拷过去格式再拷内容 我 dst 配置了一些自动化脚本 每次都爆炸(失败会重命名文件)

    现在做法是 rsync 同步到 dst 的 tmp 目录 再 mv 过去手动触发自动化脚本
    mingl0280
        36
    mingl0280  
       Dec 21, 2020
    我还以为是 windows……
    Mac 的话 rsync 拷两遍或者干脆写个脚本跑 sha256 吧
    GM
        37
    GM  
       Dec 21, 2020
    diff -r /path/to/src-dir. /path/to/dest-dir
    iceecream
        38
    iceecream  
       Dec 21, 2020
    1 楼的方案,就就可以了。
    Win 的话,2 楼的方案
    lff0305
        39
    lff0305  
       Dec 21, 2020
    可以用 PAR 工具生成校验 /恢复包,自己定义比例,比如 5%
    然后在目标机器校验,如果有错误并且不超过这个比例,可以自动修复
    3dwelcome
        40
    3dwelcome  
       Dec 21, 2020
    是程序员思维的话,随手 5~10 分钟写一段代码,算一下 hash 就可以解决的问题。
    byzf
        41
    byzf  
       Dec 21, 2020
    powershell 手写过石器时代版本控制,检查总共几十 gb 几万个文件的 md5 大约一分多钟(电脑很差)。
    MapleObserver
        42
    MapleObserver  
       Dec 26, 2020
    以前我复制包含大量小文件的文件夹时,会用存储方式做成压缩包,复制过去,解压。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   940 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 186ms · UTC 19:46 · PVG 03:46 · LAX 12:46 · JFK 15:46
    ♥ Do have faith in what you're doing.