All Projects → Freaky → Compactor

Freaky / Compactor

Licence: mit
A user interface for Windows 10 filesystem compression

Programming Languages

rust
11053 projects

Projects that are alternatives of or similar to Compactor

Compactgui
Visual Interface for the Windows 10 Compact Function
Stars: ✭ 2,103 (+372.58%)
Mutual labels:  windows-10, compression
Javafastpfor
A simple integer compression library in Java
Stars: ✭ 426 (-4.27%)
Mutual labels:  compression
Microsoft Ui Xaml
Windows UI Library: the latest Windows 10 native controls and Fluent styles for your applications
Stars: ✭ 4,428 (+895.06%)
Mutual labels:  windows-10
Hwidgen Src
HWIDGEN/kms38 source code (AutoHotKey)
Stars: ✭ 413 (-7.19%)
Mutual labels:  windows-10
Libzip
A C library for reading, creating, and modifying zip archives.
Stars: ✭ 379 (-14.83%)
Mutual labels:  compression
Httpteleport
Transfer 10Gbps http traffic over 1Gbps networks :)
Stars: ✭ 422 (-5.17%)
Mutual labels:  compression
Zipfly
Writing large ZIP archives without memory inflation
Stars: ✭ 363 (-18.43%)
Mutual labels:  compression
Dwarfs
A fast high compression read-only file system
Stars: ✭ 444 (-0.22%)
Mutual labels:  compression
Draco
Draco is a library for compressing and decompressing 3D geometric meshes and point clouds. It is intended to improve the storage and transmission of 3D graphics.
Stars: ✭ 4,611 (+936.18%)
Mutual labels:  compression
Lizard
Lizard (formerly LZ5) is an efficient compressor with very fast decompression. It achieves compression ratio that is comparable to zip/zlib and zstd/brotli (at low and medium compression levels) at decompression speed of 1000 MB/s and faster.
Stars: ✭ 408 (-8.31%)
Mutual labels:  compression
Wubi Lex
WIN10系统自带五笔的码表与短语词库安装、管理工具( 可将五笔替换为郑码等其他形码输入法 ),并可增强微软五笔的设置、热键等功能。 发布后的软件仅890KB, 只要一个EXE文件( 绿色免安装 )。软件已自带五笔86、98、091、新世纪码表,以及极点五笔、QQ五笔、 微软五笔默认词库、昱琼词库、海峰词库等。甚至自带了郑码大词库、可以一键把微软五笔替换为郑码输入法。
Stars: ✭ 385 (-13.48%)
Mutual labels:  windows-10
Ewahboolarray
A compressed bitmap class in C++.
Stars: ✭ 381 (-14.38%)
Mutual labels:  compression
Zstd Jni
JNI binding for Zstd
Stars: ✭ 424 (-4.72%)
Mutual labels:  compression
Wsl Ssh Pageant
A Pageant -> TCP bridge for use with WSL, allowing for Pageant to be used as an ssh-ageant within the WSL environment.
Stars: ✭ 381 (-14.38%)
Mutual labels:  windows-10
Windowscommunitytoolkit
The Windows Community Toolkit is a collection of helpers, extensions, and custom controls. It simplifies and demonstrates common developer tasks building UWP and .NET apps for Windows 10. The toolkit is part of the .NET Foundation.
Stars: ✭ 4,654 (+945.84%)
Mutual labels:  windows-10
Xamlflair
XamlFlair is an animation library for UWP, WPF, and Uno, built to facilitate Xaml animations using only attached properties.
Stars: ✭ 362 (-18.65%)
Mutual labels:  windows-10
Zfp
Compressed numerical arrays that support high-speed random access
Stars: ✭ 384 (-13.71%)
Mutual labels:  compression
Nog
A tiling window manager for Windows
Stars: ✭ 414 (-6.97%)
Mutual labels:  windows-10
Calculator
Windows Calculator: A simple yet powerful calculator that ships with Windows
Stars: ✭ 23,274 (+5130.11%)
Mutual labels:  windows-10
Fluent Xaml Theme Editor
The Fluent Design XAML theme editor.
Stars: ✭ 437 (-1.8%)
Mutual labels:  windows-10

Compactor

A friendly user interface to Windows 10 filesystem compression

With modern lightweight compression algorithms running at gigabytes per second per core, it's practically a no-brainer to apply them to filesystems to make better use of storage and IO.

Half-recognising this, Windows 10 ships with a reworked compression system that, while fast and effective, is only exposed to users via a command-line tool — compact.exe.

Compactor is here to plug that gap, with a simple GUI utility anyone can use.

Installation v0.10.1 Downloads

Downloads are available from the Github Releases page under Assets, or you can use these direct links:

The 64-bit version is recommended for most users.

If you get "Windows protected your PC" trying to run it, it's just SmartScreen upset the binaries aren't (yet) signed. Click "More info" and "Run anyway" if you judge things to be above-board.

Note this is beta software and comes with no warranty.

Features

Real-time Progress Updates

Compactor's directory analysis updates as it goes. You too can experience the satisfaction of watching the disk-space used counter tick down with each file compressed.

Pause, Resume, Stop

All operations can be paused and interrupted safely at any time. Compactor will finish off what it's doing and stop, or restart where it left off.

Compresstimation

Compactor performs a statistical compressibility check on larger files before passing them off to Windows for compaction. A large incompressible file can be skipped in less than a second instead of tying up your disk for minutes for zero benefit.

Machine Learning

Using advanced condition-based AI logic, Compactor can skip over files that have been previously found to be incompressible, making re-running Compactor on a previously compressed folder much quicker.

(Yes, it's an if statement and a trivial hash database, hush)

Scalable and Fast

Written in Rust, a modern compiled systems programming language from Mozilla, Compactor can cope easily with large folders containing millions of files.

Caveats

Beta Software

While it has been used successfully by thousands of people, Compactor should be used with care. It is intended for compressing replacable software, not precious files.

Make backups. Report bugs. Be nice. You are reminded:

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

It's in shouty legal text so you know I mean it.

Data Corruption

There has been one report of data corruption with open SQLite database files. The author has been unable to reproduce this, but file locking was added to version 0.10 which should prevent them from being modified.

Permissions

Compactor currently has no mechanism to elevate its privileges using UAC for protected files. If you're using a limited account you may need to run the program with elevated permissions.

Be careful what you compress. System files should be skipped automatically, and the Windows folder should be in the list of default exclusions (if you want to compact Windows, check out its CompactOS feature), but you almost certainly don't want to blindly run this across your entire C:\ drive.

Modifiable Files

Compaction is designed for files that rarely change — any modifications result in the file being uncompressed in its entirety. In fact, simply opening a file in write mode will hang until the file is uncompressed, even if no changes are made.

This generally doesn't matter much for application folders, but it's not great for databases, logs, virtual machine images, and various other things that hopefully mostly live elsewhere.

If a game uses large files and in-place binary patching for updates, it might be worth adding to the exclusions list.

Compatibility with Other Operating Systems

Compaction is only supported on Windows 10 - earlier versions of Windows will be unable to access compressed files, though the rest of the filesystem should remain fully accessible.

Linux and other operating systems will experience similar issues if the NTFS driver they're using lacks support. As of time of writing, NTFS-3G has a third-party plugin for the feature.

This is available on FreeBSD under sysutils/fusefs-ntfs-compression, while users of lesser platforms may need to manually install it like savages.

Compression Results

A totally-not-cherry-picked sample of compression results with the default settings:

Program Size Compacted Ratio
AI War 2 2.43 GiB 1.42 GiB 0.59x
Big Pharma 1.1 GiB 711 MiB 0.37x
Crusader Kings 2 2.19 GiB 1.29 GiB 0.59x
Deus Ex MD 41.31 GiB 28.06 GiB 0.68x
Infinifactory 1.71 GiB 742 MiB 0.58x
Satisfactory 15.82 GiB 10.45 GiB 0.66x
Space Engineers 16.28 GiB 9.4 GiB 0.58x
Stellaris 7.76 GiB 5.21 GiB 0.67x
Subnautica BZ 10.62 GiB 6.40 GiB 0.60x
The Long Dark 7.42 GiB 5.64 GiB 0.76x
Microsoft SDKs 5.91 GiB 2.45 GiB 0.41x
Visual Studio 2017 9.63 GiB 4.77 GiB 0.50x
Windows Kits 5.38 GiB 2.03 GiB 0.38x

A more comprehensive database of results is maintained by the CompactGUI project.

Future

There are many things I want to do with Compactor in future. These include, but are certainly not limited to:

  • Make analysis optional. It isn't fundamentally needed.
  • Multithreaded analysis/compaction for SSDs.
  • GUI rework of some description. The longer I leave this the better Rust should get at it :P
  • Installer. Why does this involve so much XML oh god.
  • Sign the binaries/installer. This appears to involve money.
  • Scheduled task or a background service for set-it-and-forget-it operation.

Feature requests can be discussed in the forum, or you may open an issue.

Alternatives

  • compact.exe is a command-line tool that ships with Windows 10. If you're familiar with the command line and batch files, maybe you'd prefer that. Weirdo.
  • CompactGUI is a popular Visual Basic program that shells out to compact.exe to do its work, instead of using the Windows API directly as Compactor does. It has some... performance issues, particularly with larger folders.
  • NTFS has supported LZNT1 compression since 1995, hidden behind a checkbox under PropertiesAdvanced Attributes. It's less flexible and has a reputation for poor performance and issues with fragmentation, but is more set-it-and-forget-it.

Are you aware of any others? Do let me know.

Nerdy Technical Stuff

Compactor is primarily written in Rust. The front-end is basically an embedded website driven by the web-view crate. It does not depend on any remote resources or open any ports.

Under the hood it uses DeviceIoControl with FSCTL_SET_EXTERNAL_BACKING and FSCTL_DELETE_EXTERNAL_BACKING, and a few functions from WofApi (Windows Overlay Filesystem). This is, of course, in part thanks to the winapi crate. Eventually I hope to get around to finishing off some of my bindings and contributing them back.

Compresstimation uses a simple linear sampling algorithm, passing blocks through LZ4 level 1 as a compressibility check and averaging across the entire file. The code is available on Github.

The incompressible-files database is simply an append-only list of SipHash128 path hashes. It should be safe to share between multiple instances if you want to compress different drives at the same time. It lives in %APPDATA%\Local\Freaky\Compactor.

Author

Compactor is written by Thomas Hurst, a nerdy, aloof weirdo from the north-east of England, and a programmer for about 25 years.

He mostly works with FreeBSD and focuses on Unix platforms, but uses Windows because he plays games instead of having a social life.

You can find him on Twitter at @blaagh, or bug him on IRC as Freaky on FreeNode.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].