Ardust Asked: 2024-07-07 00:15:28 +0800 CST2024-07-07 00:15:28 +0800 CST 2024-07-07 00:15:28 +0800 CST 为什么在两个外部驱动器之间复制的文件夹的位数或字节数不同? 772 我将目录从旧的外部驱动器复制到新的外部驱动器,但我不知道字节数或位数是哪个,它们是不同的。在旧的驱动器中,dolphin 显示目录的大小为 782,3 GiB (839.945.943.248),而在新的驱动器中,dolphin 显示目录的大小为 782,3 GiB (839.937.038.544)。两个驱动器中的文件和文件夹数量相同。这是正常的还是应该相同?这是一张图片: 左边的是旧驱动器,右边的是新驱动器。 kubuntu 3 个回答 Voted Best Answer user10489 2024-07-07T06:55:55+08:002024-07-07T06:55:55+08:00 文件不是以字节为单位存储在磁盘上的,而是以块为单位存储的。 某些工具(du、df、某些 ls 选项)以字节为单位显示空间使用情况,但字节通常是底层块大小的倍数。如果源磁盘和目标磁盘之间的块大小不同,则文件大小的舍入方式可能不同。该命令du --apparent-size查看文件长度而不是文件大小,并且复制的目录之间更有可能相同。但是,--apparent-size这也是一个估计值,可能并非在每种情况下都相同。 此外,如果两个磁盘的文件系统类型不同(请使用检查df -T),则文件元数据的存储方式也不同,而且大小很可能也不同。 正如另一个答案所指出的那样,即使磁盘具有相同的块大小和相同的文件系统格式,在删除文件时也不会立即回收用于存储目录中元数据的空间,因此目录的大小可能不一样。 请注意,诸如du估计空间使用量之类的命令会猜测底层元数据存储。诸如df显示确切空间使用量之类的命令会包含元数据存储,而元数据存储可能不直接对应于文件存储大小。图形工具从相同的来源提取数据,因此会产生相同的误差。 如果所有文件都被正确复制,则文件数量和表观大小匹配是更好的指标,但这当然是一个快速猜测,而不是保证。 Rinzwind 2024-07-07T03:02:13+08:002024-07-07T03:02:13+08:00 是的,可以(并且会有所不同)。 如果您删除一个文件,它的元数据可以保留但不会被复制(还会有更多原因)。 在两个系统上使用它: ls -alR ./ | grep -v '^d' | awk '{total += $5} END {print "Total:", total}' 并且数量将是相同的。 小警告:此类命令可能需要一些时间。sudo如果文件不是当前用户的,则需要这样做。 pts 2024-07-08T10:08:11+08:002024-07-08T10:08:11+08:00 像这样复制后以递归方式比较文件字节大小(不需要$每个命令的前导): $ du -ab dir1 | sort +1 >du1 $ du -ab dir2 | sort +1 >du2 $ diff -u du1 du2 如果最后一个(diff)命令没有显示任何内容,则没有区别。 -b执行--apparent-size并且--block-size=1;-a除了目录之外还显示文件。
文件不是以字节为单位存储在磁盘上的,而是以块为单位存储的。
某些工具(du、df、某些 ls 选项)以字节为单位显示空间使用情况,但字节通常是底层块大小的倍数。如果源磁盘和目标磁盘之间的块大小不同,则文件大小的舍入方式可能不同。该命令
du --apparent-size
查看文件长度而不是文件大小,并且复制的目录之间更有可能相同。但是,--apparent-size
这也是一个估计值,可能并非在每种情况下都相同。此外,如果两个磁盘的文件系统类型不同(请使用检查
df -T
),则文件元数据的存储方式也不同,而且大小很可能也不同。正如另一个答案所指出的那样,即使磁盘具有相同的块大小和相同的文件系统格式,在删除文件时也不会立即回收用于存储目录中元数据的空间,因此目录的大小可能不一样。
请注意,诸如
du
估计空间使用量之类的命令会猜测底层元数据存储。诸如df
显示确切空间使用量之类的命令会包含元数据存储,而元数据存储可能不直接对应于文件存储大小。图形工具从相同的来源提取数据,因此会产生相同的误差。如果所有文件都被正确复制,则文件数量和表观大小匹配是更好的指标,但这当然是一个快速猜测,而不是保证。
是的,可以(并且会有所不同)。
如果您删除一个文件,它的元数据可以保留但不会被复制(还会有更多原因)。
在两个系统上使用它:
并且数量将是相同的。
小警告:此类命令可能需要一些时间。
sudo
如果文件不是当前用户的,则需要这样做。像这样复制后以递归方式比较文件字节大小(不需要
$
每个命令的前导):如果最后一个(
diff
)命令没有显示任何内容,则没有区别。-b
执行--apparent-size
并且--block-size=1
;-a
除了目录之外还显示文件。