4 stable releases
| 1.2.0 | Aug 5, 2025 |
|---|---|
| 1.1.0 | Jul 6, 2025 |
| 1.0.1 | Jun 28, 2025 |
#238 in Compression
79KB
1.5K
SLoC
Squish
Compact, compress, and deduplicate files into a single archive format.
🧭 Table of Contents
🚀 Features
- Pack entire directories into a
.squisharchive - Automatically deduplicates duplicate files/chunks
- Compact archive format with compression
- List archive contents with summaries
- Unpack files with directory preservation
📥 Installation
Note: Ensure you have Rust and Cargo installed.
📦 Via Crates
cargo install squishrs
🔧 Clone and Build Locally:
git clone https://github.com/SamB032/squishRS.git
cd squishRS
cargo build --release
📌 Usage
Pack
squishrs pack ./my-folder -o archive.squish
List
squishrs list archive.squish
Unpack
squishrs unpack archive.squish -o ./output-dir
Help
squishrs --help
📚 Example
squishrs pack ./data -o data.squish
squishrs list data.squish
squishrs unpack data.squish -o ./restored
🛠 Development
Run commonly used commands from the provided Makefile:
> make help
all Build the release binary
build Build binary
run Run target file with arguments
test Run tests
fmt Format code with rustfmt
lint Run clippy linter
check Run basic type-checking
clean Clean build artifacts
install Install the binary system-wide
help Show help for each target
🔬 Internals
- Built on
zstd,indicatif,prettytableandclap - Chunk-based deduplication logic
- Archives include a manifest mapping files to their chunks for accurate reconstruction
- Simple
.squisharchive format optimized for speed, space-saving, and portability - Parallelized file and directory traversal for fast performance on large datasets using
Rayon
🙌 Contributions
Contributions, issues, and feature requests are welcome! Feel free to open an issue or submit a pull request.
📄 License
MIT License @ 2025
Dependencies
~12–24MB
~286K SLoC