6

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

 2 years ago
source link: https://www.v2ex.com/t/849104
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

V2EX  ›  Linux

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

  Mark42 · 16 小时 17 分钟前 · 749 次点击
[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

liprais      16 小时 6 分钟前

你先看看 du 到底在 count 啥.....

aloxaf

aloxaf      16 小时 5 分钟前

du 默认统计磁盘占用,而不是文件大小

skyoojaa

skyoojaa      15 小时 47 分钟前

可以对比下两个目录的文件数量。

tomychen

tomychen      13 小时 32 分钟前

检查一下内存...
我之前也是遇到类似问题,原因就是有一条内存坏了。导致复制大文件的时候总是出错( MD5 ,校验失败),开始以为是我程序的问题,一直在代码上找原因,后来用 cp 一样会有问题,最终换内存解决问题。

securityCoding

securityCoding      13 小时 13 分钟前 via Android

@tomychen 我擦,这也可以

Mark42

Mark42      11 小时 43 分钟前   ❤️ 1

谢谢大家的思路,破案了。
原因是源目录中的文件存在硬链接,因为硬链接是同一个 inode ,导致 du -sh 时只统计了一个文件的大小;
cp -rp 命令并没有保留原本的硬链接,而是创建了同样的文件,在系统里是不同的 inode 。所以 du 统计目的目录大小时会变大。
如何解决:cp 加上-a 参数;或者使用 rsync -H

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK