You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

是否存在无需解压缩重压缩即可复制NTFS压缩文件的Windows API?

关于NTFS压缩文件直接复制的Windows API疑问

NTFS压缩技术具备透明性,读写操作时会自动处理压缩和解压缩流程。但这一特性在复制压缩文件时会带来明显的性能损耗:复制过程中,文件会先在读取阶段被解压缩,随后在写入阶段重新压缩——哪怕目标文件夹未开启“自动压缩新文件”也是如此;如果目标文件夹开启了该选项,写入阶段还会额外多执行一次压缩操作。

我推测(尚未测试):尽管复制时经历了解压再重压缩的步骤,最终存储的压缩数据和原文件一致,但中间冗余的解压、压缩步骤会显著拖慢复制速度。

用简化模型说明:假设原始文件数据为D,NTFS压缩后的数据为C,源文件处于NTFS压缩状态,底层存储的是C。当前复制流程是C -> D -> C:先把压缩数据C解压到内存变为D(可能按块处理而非整文件),再重新压缩为C写入磁盘。如果能跳过中间步骤,直接走C -> C的流程,也就是直接复制底层压缩字节,复制效率会大幅提升。

现有API的局限

现有的LZCopy函数无法实现这种直接复制,它的行为是:

将源文件复制到目标文件。若源文件经Lempel-Ziv算法压缩,此函数会创建解压缩的目标文件;若源文件未压缩,则复制原文件。

核心疑问

是否存在无需解压缩重压缩、可直接复制NTFS压缩文件底层压缩数据的Windows API?目前是否尚无此类API?


更新内容

1. 当前发现

根据OSR社区的讨论,可通过已文档化的Defrag API、FSCTL和/或DeviceIoControl读取压缩数据,但未提及关键的第二部分:如何将压缩数据写入文件,并告知系统该数据已处于压缩状态,避免再次执行压缩操作。

2. 需求背景

近期我在旧硬盘间复制文件时发现,目标磁盘开启NTFS压缩时,复制速度差异明显。由于几乎所有源文件都是NTFS压缩状态,我想到如果有API能直接复制底层压缩数据,而非先解压再重压缩,效率会大幅提升。这更多是出于好奇,目前我已临时关闭目标文件夹的“压缩添加到此文件夹的新文件”选项,待复制完成后再对目标磁盘数据进行统一压缩。


内容的提问来源于stack exchange,提问作者Limina102

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 04:10:00