15

Как представляется, Windows сжимает сжатые папки NTFS с наименьшей возможной степенью сжатия. Хотя это может быть полезно для увеличения скорости и уменьшения нагрузки на процессор, для файлов, к которым редко обращаются (папки для резервного копирования), было бы более разумно иметь возможность увеличить степень сжатия. Существуют ли параметры, которые можно настроить для достижения этой цели?

4 ответа4

13

Короткий ответ

Нет, в настоящее время это невозможно.

Длинный ответ

Файлы и папки 1 сжимаются и распаковываются путем передачи управляющего кода FSCTL_SET_COMPRESSION и состояния сжатия в функцию API DeviceIoControl . Состояние сжатия может быть одним из следующих:

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 гигабайт, сжатие может быть неудачным.

Источник: Сжатие и распаковка файлов

Алгоритмы сжатия в NTFS предназначены для поддержки кластеров размером до 4 КБ. Если размер кластера превышает 4 КБ на томе NTFS, ни одна из функций сжатия NTFS недоступна.

Источник: сжатие файлов и папок

дальнейшее чтение

10

Как правило, это невозможно, как указано в ответе and31415.

Однако Microsoft добавила несколько новых параметров и алгоритмов сжатия 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)

Новые алгоритмы предназначены для новой функции 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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .