Posted in: Windows 10, Windows 11, Windows 8 a 8.1

Komprese Windows

Systém Windows obshauje málo známou, ale dobře dokumentovanou funkci compact, která dokáže komprimovat operační systém, vybrané soubory či adresáře. Nejde o tutéž kompresy, který je dosutpná ve vlastnotech diskové jednotky (Komprimovat jednotku a ušetřit místo na disku), která využívá vestavěné komprese NTFS.

Komprese OS ušetří zhruba 3,7 GB místa z 15 GB, které OS zabírá. Výkonové dopady jsou přítomné, ale na slušných SSD a procesorech střední třídy jsou zanedbatelné. Význam má tento nástroj především u zařízení, která mají malé interní uložiště (128 GB a méně), ale může se hodit u mnohem větších disků.

V případě funkce copmact jsou data na disku uloženy v komprimované podobě a při jejich načítání do paměti (myslím operační paměť, lidově RAM) dochází k jejich dekompresy. Pokud byla data změněna, dochází opět k jejich kompresy při zápisu na disk. Chování je obdobné jako v případě komprese datových stránek databází u MS SQL serveru.

Komprese operačního systému

Dotaz na stav komprese:

compact /CompactOS:query

Aktivace komprese:

compact /CompactOS:always

Deaktivace komprese:

compact /CompactOS:never

Komprese SW a dalších adresářů

Příkaz copmpact je možné uplatnit na libovolný adresář či soubor, jen na adresář systému Windows má specifické parametry, viz výše. Rovněž bych dle následujícího nekomprimoval složku profilu uživatele, zde bych kompresy využil pouze na jednotlivé knihovny (Dokumenty, Obrázky, Hudba, Videa). Využití následujících parametrů může vést k pádu OS v případě aplikování na adresář operačního systému.

Pro kompresy obsahu aktuálního adresáře a všech podadresářů se využije příkaz:

compact /c /s

Pokud chceme komprimovact celý disk (ne systémový) využijeme příkaz:

compact /c /i /s:\

Parametr /i zabraňuje chybám přerušit proces komprese. Pokud chceme komprimovat jen vybraný typ souborů (např. bmp), využijte následující příklad:

compact /c /s:\tmp *.bmp

Všechny příkazy uvedené výše, vyjímaje komprese systémového adresáře, lze obohatit o parametr EXE, který tanový použitý algoritmus komprese, címž určí její účinnost, ale také výkonový dopad při přistoupení k danému souburu. Následující kód je příkladem komprese jedné dll ze sady Office pomocí všech podporovaných lgoritmů. Kód je psaný v syntaxi PowerShellu (opravdu lze nástroj compact takto z PowerShellu verze 5.1 a novější volat).

#původní velikost: 39,448,384 bytes
#parametr c značí, že komprese se týká pouze jednoho souboru

#výchozí algoritmus komprese - nejnižší výkonové dopady
compact /exe:xpress4K /c /f "C:\Program Files\Microsoft Office\Office16\Uc.dll"
#výsledná velikost: 18 288 640 bytes
#kompresní poměr: 2,2:1

compact /exe:xpress8K /c /f "C:\Program Files\Microsoft Office\Office16\Uc.dll"
#výsledná velikost: 16 617 472 bytes
#kompresní poměr: 2,4:1

compact /exe:xpress16K /c /f "C:\Program Files\Microsoft Office\Office16\Uc.dll"
#výsledná velikost: 15 704 064 bytes
#kompresní poměr: 2,5:1

compact /exe:lzx /c /f "C:\Program Files\Microsoft Office\Office16\Uc.dll"
#výsledná velikost: 12 001 280 bytes
#kompresní poměr: 3,3:1

Pro zrušení komprese souboru, sožky, nebo jednotky se využívá paramter u.

Virtualizace

Na rozdíl od NTFS komprese na uložišti s virtuálními disky nemám přímou osobní zkušenost, ale i tak bych doporučil kompresy provádět uvnitř virtuálního počítače a případně nástroje virtualzačního SW. Nativní NTFS komprese není podporována pro soubory virtuálních pevných disků, virtuální stroje pak není možné v Hyper-V spoštět.

Neoficiální GUI

Microsoft tento nástroj integroval do Windows jako commandline tools, ale stejně jako k mnohým dalším komunita, nebo někdy i sám Microsoft, dodělá neoficiální GUI. Na Githubu můžete najít GUI právě k nástroji compact.

Back to Top