NTFS压缩文件夹:是否可以调整压缩率?


19

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



2
他们说“压缩格式”:“任何其他值表示使用压缩状态值指定的压缩格式来压缩文件。” 我没有找到此“格式”的含义以及它的设置方式。
Al Berger 2014年

Answers:


14

简短答案

不,目前无法执行。

长答案

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

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压缩功能可用。

来源:文件和文件夹压缩

进一步阅读


12

通常是不可能的,如and31415的答案所示

但是,微软在Windows 10中添加了一些新的NTFS压缩选项和算法,因此现在可以更改压缩率:

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)

新算法专用于新的Compact OS功能(如您在/CompactOs上面的选项中所见)。这个想法是要以最高的比率压缩只读,备份和不常访问的系统文件。恢复分区将被删除,压缩文件将同时用于执行(如果已经是最新版本)和恢复目的

LZX算法在归档方面非常有效。尽管选项名称和描述全都与“可执行文件”有关,但该选项可以应用于任何文件

E:\test>compact /a

 Listing E:\test\
 New files added to this directory will not be compressed.

  1050909 :   1050909 = 1.0 to 1   sometext.txt

...

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

 Compressing files in E:\test\

sometext.txt          1050909 :    176128 = 6.0 to 1 [OK]

1 files within 1 directories were compressed.
1,050,909 total bytes of data are stored in 176,128 bytes.
The compression ratio is 6.0 to 1.

但是,与旧算法不同的是,它们不支持即时编辑,因此写回文件会对其进行解压缩。

E:\test>echo x >> sometext.txt

E:\test>compact /a

 Listing E:\test\
 New files added to this directory will not be compressed.

  1050913 :   1050913 = 1.0 to 1   sometext.txt

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

  /C         Compresses the specified files.  Directories will be marked
             so that files added afterward will be compressed ***unless /EXE
             is specified***.
  /U         Uncompresses the specified files.  Directories will be marked
             so that files added afterward will not be compressed.  If
             /EXE is specified, only files compressed as executables will
             be uncompressed; if this is omitted, only NTFS compressed
             files will be uncompressed.

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

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


2

您可以通过第三方应用程序提高压缩率。主要示例是zipmagic.co。 我已经在笔记本电脑上使用了一年,没有任何问题。但是请注意,使用NTFS或Zipmagic压缩需要SSD硬盘驱动器,因为压缩将使您的驱动器完全碎片化并使其无用!如果您有SSD驱动器,那就继续享受吧!


0

我建议为此使用归档器,例如7-zip或Winrar。使用Winrar,甚至可以访问存档器内部的文件。请注意,在可以访问文件之前,它将首先提取整个档案,并且当您关闭并保存到文件时,它将通过修改来更新档案。这可能会使整个过程变慢,但考虑到备份是可以的。

请注意,这不是完整的备份解决方案。这是节省空间的唯一方法。

最重要的是,有一个程序可以将7z和rar归档文件挂载为虚拟驱动器:http : //www.winarchiver.com/virtual-drive.htm


6
在我的情况下,NTFS压缩驱动器用作跨平台备份存储,并且包含tar文件。当Linux归档程序为压缩格式(例如7z或xz)时,它们无法更新归档文件。NTFS对于Linux Tar存档器不可见地动态执行压缩。
Al Berger 2014年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.