An open API service indexing awesome lists of open source software.

https://github.com/kamionn/zippypack

πŸš€ Modern Rust compression tool with block-level deduplication and zstd compression. Superior ratios vs WinRAR/7-Zip with real-time progress and system image format.
https://github.com/kamionn/zippypack

archiver backup-tool cli-tool compression cross-platform data-compression deduplication file-archiver file-compression performance rust zippypack zstd

Last synced: 6 months ago
JSON representation

πŸš€ Modern Rust compression tool with block-level deduplication and zstd compression. Superior ratios vs WinRAR/7-Zip with real-time progress and system image format.

Awesome Lists containing this project

README

          

# ZippyPack

**ZippyPack** is an advanced Rust compression tool that leverages Zstandard algorithm with block-level deduplication and system image format for superior compression ratios.

## πŸš€ Features

- **Zstd Compression**: Modern Zstandard algorithm for optimal speed/ratio balance
- **Block Deduplication**: Store identical data blocks only once (64KB chunks)
- **System Image Format**: Complete folder snapshots with instant access
- **Context-Aware Compression**: File-type specific optimizations
- **Real-time Progress**: Detailed progress with speed and ETA
- **Cross-platform**: Compatible with Linux, macOS, and Windows

## πŸ“Š Performance

On a dataset of 505 source code files:
- **Compression Ratio**: 95.67% (5.1 MB β†’ 222 KB)
- **Comparison**: 6% gap with WinRAR, 12% better than 7-Zip
- **Speed**: ~0.2 MB/s with maximum compression

## πŸ“ Project Structure

```
zippypack/
β”œβ”€β”€ src/ # Main source code
β”‚ β”œβ”€β”€ main.rs # CLI interface
β”‚ β”œβ”€β”€ lib.rs # Public library
β”‚ β”œβ”€β”€ compress.rs # Traditional compression
β”‚ β”œβ”€β”€ decompress.rs # Decompression
β”‚ β”œβ”€β”€ image.rs # Image system with deduplication
β”‚ β”œβ”€β”€ profile.rs # Compression profiles
β”‚ └── error.rs # Error handling
β”œβ”€β”€ examples/ # Usage examples
β”œβ”€β”€ tools/ # Development utilities
β”œβ”€β”€ docs/ # Technical documentation
└── README.md # This file
```

## πŸ”§ Installation

```bash
git clone https://github.com/kamionn/zippypack.git
cd zippypack
cargo build --release
```

## πŸ“– Usage

### Classic Compression (.zpp)
```bash
# Compress a folder
cargo run --release -- compress --input folder/ --output archive.zpp --level 22

# Decompress an archive
cargo run --release -- decompress --input archive.zpp --output restored_folder/
```

### System Image (.zpak)
```bash
# Create system image with deduplication
cargo run --release -- create-image --input project/ --output backup.zpak --level 22

# Extract system image
cargo run --release -- extract-image --input backup.zpak --output restored_project/
```

### Advanced Options
```bash
# Compression with custom threads
cargo run --release -- compress --input src/ --output code.zpp --threads 8 --level 15

# Solid mode for better compression
cargo run --release -- compress --input data/ --output data.zpp --solid --level 22
```

## πŸ—οΈ Architecture

### Core Modules
- **`compress.rs`**: Traditional compression with type detection
- **`decompress.rs`**: Decompression with integrity validation
- **`image.rs`**: Image system with block-level deduplication
- **`profile.rs`**: File-type compression profiles
- **`error.rs`**: Typed error handling

### Archive Format (.zpak)
1. **Header**: Version, metadata, statistics
2. **Block Index**: Hash and position of each unique block
3. **Compressed Data**: Deduplicated zstd blocks
4. **File Metadata**: Directory tree and block references

## πŸ§ͺ Testing

```bash
# Unit tests (in modules)
cargo test

# Verbose tests
cargo test -- --nocapture

# Usage example
cargo run --bin basic_usage
```

## πŸ“ˆ Advantages vs Competition

| Feature | ZippyPack | WinRAR | 7-Zip |
|---------|-----------|--------|-------|
| Deduplication | βœ… | ❌ | ❌ |
| Instant Access | βœ… | ❌ | ❌ |
| Real-time Progress | βœ… | ❌ | ❌ |
| Modern Format | βœ… | ❌ | ❌ |
| Cross-platform | βœ… | ❌ | βœ… |

## πŸ”¬ Optimal Use Cases

- **Development Projects**: node_modules, target/, build/
- **Incremental Backups**: Massive deduplication benefits
- **Game Assets**: Similar textures and models
- **Documentation Archives**: Files with repetitive patterns

## πŸ›£οΈ Roadmap

- [ ] Incremental compression
- [ ] FUSE mounting for direct access
- [ ] Graphical interface
- [ ] CI/CD integration
- [ ] Optimized cloud synchronization

## 🀝 Contributing

Contributions are welcome! Check out the [issues](https://github.com/kamionn/zippypack/issues) for ongoing tasks.

## πŸ“„ License

This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.

## πŸ† Benchmarks

```bash
# Generate test files
rustc tools/generate_test_files.rs && ./generate_test_files

# Test compression
cargo run --release -- create-image --input test_files --output benchmark.zpak --level 22

# Compare with other tools
# WinRAR: 268 KB
# 7-Zip: 324 KB
# ZippyPack: 284 KB
```

## 🌍 Translations

- [FranΓ§ais (French)](README_FR.md)

---

**ZippyPack**: Because every byte counts. πŸš€