简短回答

简短回答

看起来,Windows 会以尽可能低的压缩率压缩 NTFS 压缩文件夹。虽然这可能有利于提高速度并减少 CPU 负载,但对于很少访问的文件(备份文件夹),增加压缩率可能更为明智。是否有一些参数可以调整以实现此目的?

答案1

简短回答

不,目前还不可能。

长答案

文件和文件夹1通过传递FSCTL_SET_COMPRESSION控制代码和压缩状态DeviceIoControl API函数。压缩状态可以是以下之一:

COMPRESSION_FORMAT_NONE = 0
COMPRESSION_FORMAT_DEFAULT = 1
COMPRESSION_FORMAT_LZNT1 = 2

任何非零值都表示目标项将被压缩。来自官方文档:

LZNT1压缩算法是唯一实现的压缩算法。因此,使用LZNT1压缩算法作为DEFAULT压缩方法。

来源:FSCTL_SET_COMPRESSION 控制代码

LZNT1 算法专为提高速度而设计,并且无法设置自定义压缩级别。

1文件夹实际上并未被压缩:其压缩属性仅为新文件和子文件夹提供默认压缩状态。

附加信息

NTFS 文件系统卷支持基于单个文件的文件压缩。NTFS 文件系统使用的文件压缩算法是 Lempel-Ziv 压缩。这是一种无损压缩算法,这意味着在压缩和解压缩文件时不会丢失任何数据,而不是有损压缩算法,例如 JPEG,每次进行数据压缩和解压缩时都会丢失一些数据。

在 NTFS 文件系统上,压缩是透明执行的。这意味着无需更改现有应用程序即可使用它。

如果压缩大于 30 GB 的文件,压缩可能不会成功。

来源:文件压缩和解压缩

NTFS 中的压缩算法设计为支持最大 4 KB 的簇大小。当 NTFS 卷上的簇大小大于 4 KB 时,所有 NTFS 压缩功能都不可用。

来源:文件和文件夹压缩

进一步阅读

答案2

一般来说这是不可能的,正如and31415 的回答

然而微软添加了一些新的 NTFS 压缩选项和算法在 Windows 10 中,现在有一种方法可以更改压缩率:

COMPACT [/C | /U] [/S[:dir]] [/A] [/I] [/F] [/Q] [/EXE[:algorithm]]
        [/CompactOs[:option] [/WinDir:dir]] [filename [...]]
...
  /EXE       Use compression optimized for executable files which are read
             frequently and not modified.  Supported algorithms are:
             XPRESS4K  (fastest) (default)
             XPRESS8K
             XPRESS16K
             LZX       (most compact)

新算法旨在用于新的紧凑操作系统功能(如您在上面的选项中看到的/CompactOs)。这个想法是压缩只读、备份和不常访问的系统文件比率最高的。恢复分区将被删除,压缩文件将用于执行(如果已经是最新版本)和恢复目的

LZX 算法是相当高效归档时。尽管选项名称和描述都是关于“可执行文件”的,但该选项可应用于任何文件

E:\测试>紧凑/a

 清单 E:\test\
 添加到此目录的新文件将不会被压缩。

  1050909 : 1050909 =1.0 至 1   一些文本.txt

...

E:\测试>compact /c /exe:lzx sometext.txt

 压缩 E:\test\ 中的文件

某些文本.txt 1050909 : 176128 =6.0 比 1[好的]

1 个目录中的 1 个文件被压缩。
总共 1,050,909 字节的数据存储在 176,128 字节中。
压缩比为6.0比1。

然而与旧算法不同,它们不支持即时编辑,因此写回文件会将其解压缩。

E:\测试>echo x >> 某些文本.txt

E:\测试>紧凑/a

 清单 E:\test\
 添加到此目录的新文件将不会被压缩。

  1050913 : 1050913 =1.0 至 1   一些文本.txt

需要注意的是,您不能将文件夹设置为使用这些新算法自动标记要压缩的新文件,因为如帮助部分所述compact(重点是我的)

/C 压缩指定文件。目录将被标记
           这样之后添加的文件就会被压缩除非/EXE
           已指定
/U 解压指定文件。目录将被标记
           这样之后添加的文件就不会被压缩。如果
           /EXE 被指定,只有压缩为可执行文件才会
           未压缩;如果省略,则只有 NTFS 压缩
           文件将被解压缩。

因此,如果你想将它们用作备份文件,你可能必须在备份后或一段时间后定期运行脚本来手动压缩

不幸的是,这是 Windows 10 中的新功能,因此它不能在旧版本中使用。然而NTFS-3g 支持它,因此从 Linux 访问它不会有问题。如果您不使用 Windows 10,您可以运行 Linux live USB 或 Windows 10 PE 来打开这些文件

答案3

你可以通过第三方应用来提高压缩率。最好的例子是zipmagic.co 我在笔记本电脑上用了一年,没有出现任何问题。但请注意,使用 NTFS 或 Zipmagic 压缩需要 SSD 硬盘,因为压缩会使您的驱动器完全碎片化并变得毫无用处!如果您有 SSD 驱动器,那就继续享受吧!

答案4

遗憾的是到目前为止,Windows 下的 NTFS 文件系统仅支持 Xpress4k、8k、16k 和 LZX 这几种压缩方法。

但是,如果你将选项从 NTFS 移开,例如文件系统,可能会获得更好的压缩率和使用体验。

相关内容