V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
Mark42
V2EX  ›  Linux

请教一个 cp 拷贝,目录大小不一致的问题

  •  
  •   Mark42 · 2022-04-25 11:38:24 +08:00 · 2513 次点击
    这是一个创建于 724 天前的主题,其中的信息可能已经有所发展或是发生改变。
    [root@xxx home]# cp -rp /var/lib/docker /home/docker-data
    [root@xxx home]# du -sh /var/lib/docker
    4.3G /var/lib/docker
    [root@xxx home]# du -sh /home/docker-data/
    4.7G /home/docker-data/
    6 条回复    2022-04-25 16:12:58 +08:00
    liprais
        1
    liprais  
       2022-04-25 11:49:38 +08:00
    你先看看 du 到底在 count 啥.....
    aloxaf
        2
    aloxaf  
       2022-04-25 11:50:34 +08:00
    du 默认统计磁盘占用,而不是文件大小
    skyoojaa
        3
    skyoojaa  
       2022-04-25 12:09:14 +08:00
    可以对比下两个目录的文件数量。
    tomychen
        4
    tomychen  
       2022-04-25 14:24:11 +08:00
    检查一下内存...
    我之前也是遇到类似问题,原因就是有一条内存坏了。导致复制大文件的时候总是出错( MD5 ,校验失败),开始以为是我程序的问题,一直在代码上找原因,后来用 cp 一样会有问题,最终换内存解决问题。
    securityCoding
        5
    securityCoding  
       2022-04-25 14:42:47 +08:00 via Android
    @tomychen 我擦,这也可以
    Mark42
        6
    Mark42  
    OP
       2022-04-25 16:12:58 +08:00   ❤️ 3
    谢谢大家的思路,破案了。
    原因是源目录中的文件存在硬链接,因为硬链接是同一个 inode ,导致 du -sh 时只统计了一个文件的大小;
    cp -rp 命令并没有保留原本的硬链接,而是创建了同样的文件,在系统里是不同的 inode 。所以 du 统计目的目录大小时会变大。
    如何解决:cp 加上-a 参数;或者使用 rsync -H
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5719 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 02:22 · PVG 10:22 · LAX 19:22 · JFK 22:22
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.