Стислі папки NTFS: чи можна налаштувати коефіцієнт стиснення?


19

Як здається, Windows стискає стиснуті папки NTFS з найнижчим можливим коефіцієнтом стиснення. Хоча це може бути корисним для збільшення швидкості та зменшення завантаження процесора, для файлів, до яких звертаються рідко (резервні папки), було б більш розумним мати можливість збільшити коефіцієнт стиснення. Чи є якісь параметри, які можуть бути налаштовані для досягнення цього?



2
Вони кажуть про "формат стиснення": "Будь-яке інше значення вказує на те, що файл стискається, використовуючи формат стиснення, визначений значенням стану стиснення." Я не знайшов, що означає цей "формат" і як він встановлений.
Аль Бергер

Відповіді:


14

Коротка відповідь

Ні, наразі це неможливо.

Довга відповідь

Файли та папки 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 гігабайт, стиснення може не вдатися.

Джерело: Стиснення та декомпресія файлів

Алгоритми стиснення в NTFS розроблені для підтримки розмірів кластерів до 4 Кб. Якщо розмір кластера перевищує 4 Кб на об'ємі NTFS, жодна з функцій стиснення NTFS недоступна.

Джерело: Стиснення файлів і папок

Подальше читання


12

Як правило, це неможливо, як зазначено у відповіді 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


6
Стислий накопичувач NTFS в моєму випадку використовується як міжплатформене резервне копіювання і містить файли tar. Архівники Linux не можуть оновлювати архіви, коли вони знаходяться у стисненому форматі, наприклад 7z або xz. NTFS виконує стиснення на льоту непомітно для архіватора Linux Tar.
Аль Бергер
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.