du -sh 和 ls -al 显示的大小差异

du -sh 和 ls -al 显示的大小差异

我将一个 zip 文件从已安装的驱动器复制到我的虚拟机。现在,当我比较大小时,发现两者du -sh相差 900mb,而虚拟机上的副本大小较小。

然而,当我这样做时ls -al,两个 zip 文件的字节数完全匹配。

我很困惑,复制操作到底成功没有?

这里为什么会有差异呢?

编辑:添加输出。文件是使用 rsync 复制的。VM 正在运行 Ubuntu 18.02。

使用 du -sh

~/mountedVM# du -sh dev_preview.zip
7.5G dev_preview.zip

~# du -sh dev_preview.zip
6.6G dev_preview.zip

使用 ls -al

~/mountedVM# ls -al
-rw-r--r--  1 root  root  6986744975 Aug 29 09:17 dev_preview.zip

~# ls -al
-rw-r--r--  1 root root 6986744975 Aug 30 10:09 dev_preview.zip

答案1

文件系统可能使用稀疏文件或其他方式的“压缩”文件来存储文件内容。然后,磁盘/分区/硬件相关实用程序(例如 fdisk、du、...)会报告实际使用的磁盘空间量

文件相关的实用程序(例如 ls、wc 等)应该以未压缩的形式报告文件中的数据量。

与文件归档实用程序(例如创建 zip、rar、7zip 和 tar.gz 归档的实用程序)进行比较,列出有关归档文​​件占用空间的信息。

使用例如验证文件的内容

$ sha1sum--帮助
用法:sha1sum [选项]... [文件]...
打印或检查 SHA1(160 位)校验和。
...

$ sha1sum ubuntu-16.04.6-desktop-amd64.iso >chksums.txt

$ cat chksums.txt
a09607901183ab25c675626024aa402663fa2558 ubuntu-16.04.6-桌面-amd64.iso

$ sha1sum -c chksums.txt
ubuntu-16.04.6-desktop-amd64.iso:确定

$ time sha1sum ubuntu-16.04.6-desktop-amd64.iso
a09607901183ab25c675626024aa402663fa2558 ubuntu-16.04.6-桌面-amd64.iso
已过 3.004 秒,p=100.00,3.004 实际,2.852 用户,0.152 系统。

$ wget http://releases.ubuntu.com/16.04/SHA1SUMS
...

$ sha1sum -c SHA1SUMS
ubuntu-16.04.6-desktop-amd64.iso:确定
...

$ cat /proc/cpuinfo | 排序 | uniq | grep 模型
型号:60
型号名称:Intel(R) Core(TM) i7-4770K CPU @ 3.50GHz

相关内容