Foldery skompresowane NTFS: czy można dostosować współczynnik kompresji?

19

Jak się wydaje, system Windows kompresuje foldery skompresowane NTFS z możliwie najniższym współczynnikiem kompresji. Chociaż może to być dobre dla zwiększenia prędkości i zmniejszenia obciążenia procesora, dla plików, do których dostęp jest rzadki (foldery kopii zapasowych), rozsądniej byłoby mieć możliwość zwiększenia współczynnika kompresji. Czy są jakieś parametry, które można ulepszyć, aby to osiągnąć?

Al Berger
źródło
2
Mówią o „formacie kompresji”: „Każda inna wartość wskazuje, że plik jest kompresowany przy użyciu formatu kompresji określonego przez wartość stanu kompresji”. Nie znalazłem, co oznacza ten „format” i jak jest ustawiony.
Al Berger

Odpowiedzi:

14

Krótka odpowiedź

Nie, w tej chwili nie jest to możliwe.

Długa odpowiedź

Pliki i foldery 1 są kompresowane i dekompresowane przez przekazanie FSCTL_SET_COMPRESSIONkodu sterującego i stanu kompresji do funkcji DeviceIoControl API . Stan kompresji może być jednym z następujących:

COMPRESSION_FORMAT_NONE = 0
COMPRESSION_FORMAT_DEFAULT = 1
COMPRESSION_FORMAT_LZNT1 = 2

Każda niezerowa wartość oznacza, że ​​element docelowy zostanie skompresowany. Z oficjalnej dokumentacji:

Algorytm kompresji LZNT1 jest jedynym zaimplementowanym algorytmem kompresji. W rezultacie algorytm kompresji LZNT1 jest wykorzystywany jako DEFAULTmetoda kompresji.

Źródło: kod kontrolny FSCTL_SET_COMPRESSION

Algorytm LZNT1 został zaprojektowany z myślą o szybkości i nie ma możliwości ustawienia niestandardowego poziomu kompresji.

1 Foldery nie są tak naprawdę kompresowane: ich atrybut kompresji nadaje tylko domyślny stan kompresji nowym plikom i podfolderom.

Dodatkowe informacje

Woluminy systemu plików NTFS obsługują kompresję plików dla poszczególnych plików. Algorytmem kompresji plików stosowanym przez system plików NTFS jest kompresja Lempel-Ziv. Jest to bezstratny algorytm kompresji, co oznacza, że ​​żadne dane nie są tracone podczas kompresji i dekompresji pliku, w przeciwieństwie do algorytmów kompresji stratnej , takich jak JPEG, w których niektóre dane są tracone za każdym razem, gdy następuje kompresja i dekompresja danych.

W systemie plików NTFS kompresja odbywa się w sposób transparentny. Oznacza to, że można go używać bez konieczności wprowadzania zmian w istniejących aplikacjach.

Jeśli kompresujesz plik większy niż 30 gigabajtów, kompresja może się nie powieść.

Źródło: Kompresja i dekompresja plików

Algorytmy kompresji w systemie plików NTFS są zaprojektowane do obsługi klastrów o wielkości do 4 KB. Gdy rozmiar klastra jest większy niż 4 KB na woluminie NTFS, żadna z funkcji kompresji NTFS nie jest dostępna.

Źródło: Kompresja plików i folderów

Dalsza lektura

i31415
źródło
12

Zasadniczo nie jest to możliwe, jak wskazano w odpowiedzi and31415 .

Jednak Microsoft dodał kilka nowych opcji i algorytmów kompresji NTFS w Windows 10, więc teraz jest sposób na zmianę współczynnika kompresji:

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)

Nowe algorytmy są przeznaczone dla nowej funkcji Compact OS (jak widać w /CompactOspowyższej opcji). Chodzi o to, aby skompresować pliki systemowe tylko do odczytu, kopie zapasowe i rzadziej dostępne pliki w najwyższym stosunku. Partycja odzyskiwania jest usuwana, a skompresowany plik zostanie następnie wykorzystany zarówno do wykonania (jeśli jest to najnowsza wersja), jak i do celu odzyskiwania

Algorytm LZX jest dość wydajny przy archiwizacji. I pomimo tego, że nazwa i opis opcji dotyczą „plików wykonywalnych”, opcję można zastosować do dowolnych plików

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.

Jednak w przeciwieństwie do starego algorytmu nie obsługują edycji „w locie” , więc zapis do pliku rozpakowuje się.

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

Ważną uwagą jest to, że nie można ustawić folderu tak, aby oznaczał nowe pliki, które mają być automatycznie kompresowane przy użyciu tych nowych algorytmów , ponieważ jak podano w części pomocy compact(moje podkreślenie)

  /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.

Dlatego jeśli chcesz użyć ich do plików kopii zapasowych, może być konieczne uruchomienie skryptu w celu skompresowania go ręcznie po utworzeniu kopii zapasowej lub okresowo po pewnym czasie

Niestety ten nowy w systemie Windows 10, dlatego nie można go używać w starszych wersjach. Jednak NTFS-3g obsługuje go , dlatego nie będziesz miał problemów z dostępem do niego z Linuksa. Jeśli nie korzystasz z systemu Windows 10, możesz uruchomić Linux Live USB lub Windows 10 PE, aby otworzyć te pliki

phuclv
źródło
2

Możesz zwiększyć współczynnik kompresji za pomocą aplikacji innych firm. Najlepszym przykładem jest zipmagic.co Używam go na moim laptopie od roku bez żadnego problemu. Zauważ jednak, że użycie kompresji NTFS lub Zipmagic wymaga dysku twardego SSD, ponieważ kompresja sprawi, że dysk będzie całkowicie rozdrobniony i stanie się bezużyteczny! Jeśli masz dysk SSD, śmiało i ciesz się!

Behrouz.M
źródło
0

Radziłbym w tym celu użyć archiwizatora, takiego jak 7-zip lub Winrar. Dzięki Winrar można nawet uzyskać dostęp do pliku znajdującego się w archiwizatorze. Pamiętaj, że najpierw wypakuje całe archiwum, zanim będzie miało dostęp do pliku, i zaktualizuje archiwum o modyfikacje po zamknięciu i zapisaniu pliku. Może to spowolnić cały proces, ale biorąc pod uwagę, że jest to kopia zapasowa, powinna być w porządku.

Pamiętaj, że nie jest to pełne rozwiązanie do tworzenia kopii zapasowych. To jedyny sposób na oszczędność miejsca.

Oprócz tego istnieje program, który może montować archiwa 7z i rar jako dysk wirtualny: http://www.winarchiver.com/virtual-drive.htm

LPChip
źródło
6
Dysk skompresowany NTFS w moim przypadku jest używany jako wieloplatformowy magazyn kopii zapasowych i zawiera pliki tar. Archiwa systemu Linux nie mogą aktualizować archiwów, gdy są w formacie skompresowanym, takim jak 7z lub xz. NTFS wykonuje kompresję w locie w sposób niewidoczny dla archiwizatora Tar Linux.
Al Berger