了解更多银河麒麟操作系统全新产品请点击访问麒麟软件产品专区https://www.kylinos.cn/productPc/开发者专区https://developer.kylinos.cn/文档中心https://document.kylinos.cn/document/center目录一、文档概述二、主要内容2.1 文件大小差异之谜II 与 du 命令的本质区别2.1.1 命令原理对比2.1.2 空洞文件的识别方法2.2 scp 传输前后文件大小变化但 md5sum 一致的原因2.2.1 md5sum 的校验逻辑2.2.2 scp 对空洞文件的处理机制稀疏文件的特性scp 的传输逻辑2.3. 保持稀疏文件特性的解决方案使用 rsync 替代 scp2.4 总结理解文件系统与传输协议的底层逻辑一、文档概述在文件管理和操作过程中常常会遇到一些看似矛盾的现象例如使用不同命令查看文件大小存在差距、文件传输前后大小变化但校验值一致等。这些问题背后往往与文件空间稀疏文件的特性以及文件传输协议的处理方式密切相关。本文将结合技术原理与实际案例详细解析这些现象的成因与应对方法。二、主要内容2.1 文件大小差异之谜II 与 du 命令的本质区别2.1.1 命令原理对比ls -l或 ll显示文件的逻辑大小即文件中数据的理论字节数包含未实际分配磁盘空间的“空洞”部分。du -sh显示文件的实际磁盘占用量仅计算已分配物理块的空间大小忽略空洞。2.1.2 空洞文件的识别方法当文件的逻辑大小ls 结果远大于实际磁盘占用du 结果时可判定存在数据空洞。具体验证方式如下命令行验证stat --format%b %s 文件名 # %b 为块数%s 为文件大小字节若%s 数值显著大于%b×块大小默认块大小为 4KB则说明存在空洞2.2 scp 传输前后文件大小变化但 md5sum 一致的原因2.2.1 md5sum 的校验逻辑md5sum 工具用于验证文件内容的完整性它会逐字节读取文件内容并计算哈希值。对于空洞文件操作系统在读取时会将空洞部分填充为零字节因此1源文件的逻辑内容含空洞填充的零字节与目标文件的实际内容传输后写入的零字节完全一致。2即使文件传输前后存储形态不同md5sum 计算结果仍相同。2.2.2 scp 对空洞文件的处理机制稀疏文件的特性稀疏文件通过文件系统元数据标记空洞位置实际不占用物理空间读取时动态填充零字节常用于数据库快照、日志文件等场景。scp 的传输逻辑读取阶段源端 scp 读取文件的所有逻辑内容包括空洞对应的零字节。传输阶段将读取到的所有数据含零字节通过网络发送至目标端。写入阶段目标端按接收到的字节流创建新文件所有零字节均被实际写入磁盘空洞被“填满”。结果目标文件变为普通文件逻辑大小与实际磁盘占用一致导致 du 命令显示的大小增加但内容与源文件一致含零字节故 md5sum 值不变。2.3. 保持稀疏文件特性的解决方案使用 rsync 替代 scp若需在文件传输过程中保留空洞稀疏性可采用支持稀疏文件处理的工具例如 rsync 命令的--sparse参数rsync --sparse 源文件 目标路径原理rsync 会检测文件中的连续零字节区域并在目标端重建空洞避免实际写入零字节从而保持稀疏文件的存储优化特性。适用场景传输大型日志文件、数据库备份等包含大量空洞的文件时可显著减少传输数据量与磁盘占用。2.4 总结理解文件系统与传输协议的底层逻辑空洞文件的本质是文件系统优化存储的一种机制逻辑上存在数据但物理上未分配空间。命令差异的核心ls 关注逻辑大小du 关注物理占用两者分别反映文件的不同属性。传输工具的选择scp 会“展开”空间rsync 可保留稀疏性需根据实际需求如存储空间、传输效率灵活选择。通过深入理解这些技术细节可在日常运维中更高效地处理文件存储与传输问题避免因工具特性差异导致的误判与资源浪费。