使用 scp 时,发现目标文件夹中文件总大小减少了 0.1G,并且发现目标文件夹中的一些文件大小变大了。这可能是什么原因造成的?
源目录个别以及总大小如下:
du -h *
:
0 acnoltcustmktikprd1.vmsd
4.0K acnoltcustmktikprd1.vmx
4.0K acnoltcustmktikprd1.vmxf
5.1G mikrotiktest-flat.vmdk
12K mikrotiktest.nvram
4.0K mikrotiktest.vmdk
0 mikrotiktest.vmsd
4.0K mikrotiktest.vmxf
224K vmware-1.log
168K vmware-2.log
420K vmware-3.log
336K vmware-4.log
252K vmware-5.log
252K vmware-6.log
256K vmware.log
du -csh .
5.1G .
5.1G total
目标目录的个别大小以及总大小如下:
du -h *
:
0 acnoltcustmktikprd1.vmsd
8.0K acnoltcustmktikprd1.vmx
0 acnoltcustmktikprd1.vmxf
5.0G mikrotiktest-flat.vmdk
1.0M mikrotiktest.nvram
0 mikrotiktest.vmdk
0 mikrotiktest.vmsd
0 mikrotiktest.vmxf
1.0M vmware-1.log
1.0M vmware-2.log
1.0M vmware-3.log
1.0M vmware-4.log
1.0M vmware-5.log
1.0M vmware-6.log
1.0M vmware.log
du -csh .
5.0G .
5.0G total
关于文件系统:源系统在 Ubuntu 12.04/ext4 上,目标系统是 VMware vSphere VMFS。
答案1
这与 无关scp
。这是文件系统和所用块大小的问题。
简单来说,例如,如果您使用 512 KB 的块大小,并且您有一个 2.5MB 大小的文件,那么该文件将保留 5 个块。此时,当文件系统读取大小时,它将计算 5*512KB=2.5MB
现在,如果您的块大小为 1MB,那么大小为 2.5MB 的相同文件将保留 3 个块。此时,当文件系统读取大小时,它将计算 3*1MB=3MB
另一个可能的原因
如果两个系统的块大小相同,那么这可能是由文件的起始扇区引起的。
也就是说,我的意思是文件系统中的一个块实际上是许多扇区的集合。这些扇区(我认为默认是 4 个)组成了数据块。
所以假设
在系统 A 中,文件从块 0 的扇区 1 开始,而在系统 B 中,文件从块 0 的扇区 0 开始。这会导致大小不同,因为系统 A 中的文件将保留更多扇区,因此保留更多块,尽管大小更大