我在 Windows 10 上安装了 VMware,客户机是 Ubuntu。我使用以下命令将 2.2G 的目录从 Ubuntu 客户机复制到我的 USB 闪存盘:
rsync ubuntudirectory usbdirectory -r
但我发现文件空间减少了1.0G。
du ubuntudirectory -hc
2.2G
du usbdirectory -hc
1.2G
发生了什么事?目录中只有纯文本文件。
并且我认为可能是某些文件名太长导致复制(rsync)遗漏了某些文件,但事实并非如此。
ls usbdirectory | wc -l
559562
ls ubuntudirectory | wc -l
560213
最有可能的是,这些文件的大小几乎相同,因此文件传输失败似乎不是磁盘空间大幅减少的原因。
为了确保不是忽略的文件导致了缩减(正如@Anwar 所怀疑的那样),我尝试使用另一个小得多的目录来重现它。缩减了 10M,从 17M 减至 6.8M。两个目录的文件数量完全相同(确切数量为 8948)。在 rsynced 回客户磁盘(从 usb)后,目录从 6.8M 恢复到 17M。
du /home/myname/somewhere/text -hc
1700 万
rsync /home/myname/somewhere/text /media/myname/UUI/text -r
du /media/myname/UUI/text -hc
6.8百万
rsync /media/myname/UUI/text /home/myname/text -r
du /home/myname/text -hc
1700 万
答案1
文件以由多个 512 字节组成的块的形式写入,例如 1kB、4kB。块大小因文件系统和磁盘大小而异。磁盘越大,块越大。包含 1.5 kB 数据的文件在块大小为 512 kB 的文件系统上将占用 1.5 kB 的磁盘空间,在块大小为 1 kB 的文件系统上将占用 2 kB 的磁盘空间,在块大小为 4 kB 的文件系统上将占用 4 kB 的磁盘空间。
du
命令显示文件占用的所有块的磁盘空间估计值。
如果(尤其是)您有大量小文件,则在每个文件末尾的块中保留但未被数据使用的空间在具有较大块大小(较大磁盘)的磁盘/文件系统上会更大。
您可以使用以下命令检查特定设备的块大小:
sudo blockdev --getbsz /dev/sda1