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

2022-04-25 11:38:24 +08:00
 Mark42
[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/
2653 次点击
所在节点    Linux
6 条回复
liprais
2022-04-25 11:49:38 +08:00
你先看看 du 到底在 count 啥.....
aloxaf
2022-04-25 11:50:34 +08:00
du 默认统计磁盘占用,而不是文件大小
skyoojaa
2022-04-25 12:09:14 +08:00
可以对比下两个目录的文件数量。
tomychen
2022-04-25 14:24:11 +08:00
检查一下内存...
我之前也是遇到类似问题,原因就是有一条内存坏了。导致复制大文件的时候总是出错( MD5 ,校验失败),开始以为是我程序的问题,一直在代码上找原因,后来用 cp 一样会有问题,最终换内存解决问题。
securityCoding
2022-04-25 14:42:47 +08:00
@tomychen 我擦,这也可以
Mark42
2022-04-25 16:12:58 +08:00
谢谢大家的思路,破案了。
原因是源目录中的文件存在硬链接,因为硬链接是同一个 inode ,导致 du -sh 时只统计了一个文件的大小;
cp -rp 命令并没有保留原本的硬链接,而是创建了同样的文件,在系统里是不同的 inode 。所以 du 统计目的目录大小时会变大。
如何解决:cp 加上-a 参数;或者使用 rsync -H

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/849104

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX