AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / computer / 问题 / 1719973
Accepted
dddaasdf
dddaasdf
Asked: 2022-05-09 02:17:59 +0800 CST2022-05-09 02:17:59 +0800 CST 2022-05-09 02:17:59 +0800 CST

NTFS 压缩究竟对文件做了什么?

  • 772

直到不久前,我什至不知道您可以使用 Windows 的内置压缩来压缩特定的文件夹、文件甚至整个驱动器。一个简单的方法是转到属性并选中“压缩内容以节省磁盘空间”,一切就绪。

第一次听说它,我认为它就像WinZip压缩文件以减小大小或将所有文件合并到一个压缩文件中。但它似乎有不同的用例。

最有趣的是文件被压缩了,但文件的哈希输出保持不变(使用第三方哈希计算器的简短实验)。这怎么可能是真的?如果输入发生变化,则哈希输出必须发生变化(除非发生非常罕见且偏离主题的冲突)。例如,假设我压缩了一个名为MYDOCUMENT.pdf的文件,我可以保持这种方式,将其放在 USB 驱动器或其他新安装的 PC 上,然后像普通文件一样使用它,而无需手动解压缩等?

当我在属性中检查文件大小时,大小甚至没有改变一个字节,但只有“磁盘大小”在减少。所以看起来文件的数据保持原样(相同的哈希值可能证明了这一点),但它只是在从操作系统端读取它时压缩和解压缩。

另一个问题是:通过键入“compact.exe /compactos:always”,还有另一种使用命令行提示符的压缩算法。两者有什么区别?

这些天Windows让我头疼:/

windows ntfs
  • 2 2 个回答
  • 5175 Views

2 个回答

  • Voted
  1. Best Answer
    DavidPostill
    2022-05-09T02:49:02+08:002022-05-09T02:49:02+08:00

    NTFS 压缩究竟对文件做了什么?

    默认情况下,它使用 Lempel-Ziv 压缩的变体透明地压缩它们:

    LZNT1 压缩算法是唯一实现的压缩算法。结果,LZNT1压缩算法被用作DEFAULT压缩方法。

    来源:FSCTL_SET_COMPRESSION 控制代码

    当您读取文件(例如计算文件哈希)时,它会在运行中透明地解压缩。


    还有另一种使用命令行提示符的压缩算法

    compact.exe /compactos:always",两者有什么区别?

    compact显示或更改 NTFS 分区上文件的压缩。

    always将压缩所有操作系统二进制文件并将系统状态设置为非压缩。

    它仅支持exe文件的不同算法:

    /EXE Use compression optimised for executable files which are read frequently and not modified,
    
    Supported algorithms are:
    
    XPRESS4K (fastest) default 
    XPRESS8K 
    XPRESS16K 
    LZX (most compact)
    
    
    /CompactOs  Set or query the systems compression state.
    
    Supported options are:
    
    query  - Query the systems compact state.
    always - Compress all OS binaries and set the system state to non-compact.
    never  - Uncompress all OS binaries and set the system state to compact which remains unless an administrator changes it.
    

    来源:Compact - 压缩文件 - Windows CMD - SS64.com


    延伸阅读

    • [MS-XCA]:LZNT1 算法细节 | 微软文档
    • 27
  2. Jonathan
    2022-05-10T23:12:57+08:002022-05-10T23:12:57+08:00

    @DavidPostill 的回答是正确且完整的,但让我也尝试解释一下:

    NTFS 压缩对使用它的任何应用程序都是透明的。这意味着对于每个:

    • 读取文件,文件在呈现给应用程序以进行显示/哈希计算/复制某处/等之前被解压缩。
    • 写入文件,在应用程序写入文件后压缩文件。

    性能:理论上,由于正在发生压缩/解压缩,读取/写入文件会变得有些慢。但是,如今这通常可以忽略不计,并且也可能被需要存储较少信息的驱动器所抵消。

    管理:

    • Windows 资源管理器显示您正在使用的磁盘空间量,以及如果不压缩文件将使用多少空间。
    • compact.exe还向您展示了这一点,还允许您启用/禁用文件压缩。compact.exe /CompactOs:always将设置 Windows 压缩所有操作系统二进制文件。
    • 4

相关问题

  • 如何在 Windows Precision 触摸板上禁用鼠标加速?

  • 批量重命名图像文件集

  • Python 的“pass”参数的批处理等价物是什么?

  • 在 Windows 上与 Docker 守护进程通信

  • 资源管理器侧面板中的桌面外壳快捷方式

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何减少“vmmem”进程的消耗?

    • 11 个回答
  • Marko Smith

    从 Microsoft Stream 下载视频

    • 4 个回答
  • Marko Smith

    Google Chrome DevTools 无法解析 SourceMap:chrome-extension

    • 6 个回答
  • Marko Smith

    Windows 照片查看器因为内存不足而无法运行?

    • 5 个回答
  • Marko Smith

    支持结束后如何激活 WindowsXP?

    • 6 个回答
  • Marko Smith

    远程桌面间歇性冻结

    • 7 个回答
  • Marko Smith

    子网掩码 /32 是什么意思?

    • 6 个回答
  • Marko Smith

    鼠标指针在 Windows 中按下的箭头键上移动?

    • 1 个回答
  • Marko Smith

    VirtualBox 无法以 VERR_NEM_VM_CREATE_FAILED 启动

    • 8 个回答
  • Marko Smith

    应用程序不会出现在 MacBook 的摄像头和麦克风隐私设置中

    • 5 个回答
  • Martin Hope
    Saaru Lindestøkke 为什么使用 Python 的 tar 库时 tar.xz 文件比 macOS tar 小 15 倍? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh 如何减少“vmmem”进程的消耗? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Windows 10 搜索未加载,显示空白窗口 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    v15 为什么通过电缆(同轴电缆)的千兆位/秒 Internet 连接不能像光纤一样提供对称速度? 2020-01-25 08:53:31 +0800 CST
  • Martin Hope
    andre_ss6 远程桌面间歇性冻结 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney 为什么在 URL 后面加一个点会删除登录信息? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension 鼠标指针在 Windows 中按下的箭头键上移动? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca 我所有的 Firefox 附加组件突然被禁用了,我该如何重新启用它们? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK 是否可以使用文本创建二维码? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 更改 git init 默认分支名称 2019-04-01 06:16:56 +0800 CST

热门标签

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve