ZippyPack est un outil de compression avancé en Rust qui utilise l'algorithme Zstandard avec déduplication par blocs et format d'image système.
- Compression zstd : Utilise l'algorithme Zstandard moderne pour un équilibre optimal vitesse/ratio
- Déduplication par blocs : Stocke une seule fois les blocs de données identiques (64KB)
- Format d'image système : Capture complète de dossiers avec accès instantané
- Compression contextuelle : Optimisations spécifiques par type de fichier
- Accès temps réel : Progression détaillée avec vitesse et ETA
- Cross-platform : Compatible Linux, macOS et Windows
Sur un dataset de 505 fichiers de code source :
- Ratio de compression : 95.67% (5.1 MB → 222 KB)
- Comparaison : 6% d'écart avec WinRAR, 12% mieux que 7-Zip
- Vitesse : ~0.2 MB/s avec compression maximale
zippypack/
├── src/ # Code source principal
│ ├── main.rs # Interface CLI
│ ├── lib.rs # Bibliothèque publique
│ ├── compress.rs # Compression traditionnelle
│ ├── decompress.rs # Décompression
│ ├── image.rs # Système d'images avec déduplication
│ ├── profile.rs # Profils de compression
│ └── error.rs # Gestion d'erreurs
├── examples/ # Exemples d'utilisation
├── tools/ # Utilitaires de développement
├── docs/ # Documentation technique
└── README.md # Ce fichier
git clone https://github.com/kamionn/zippypack.git
cd zippypack
cargo build --release# Comprimer un dossier
cargo run --release -- compress --input dossier/ --output archive.zpp --level 22
# Décompresser une archive
cargo run --release -- decompress --input archive.zpp --output dossier_restauré/# Créer une image système avec déduplication
cargo run --release -- create-image --input projet/ --output backup.zpak --level 22
# Extraire une image système
cargo run --release -- extract-image --input backup.zpak --output projet_restauré/# Compression avec threads personnalisés
cargo run --release -- compress --input src/ --output code.zpp --threads 8 --level 15
# Mode solid pour meilleure compression
cargo run --release -- compress --input data/ --output data.zpp --solid --level 22compress.rs: Compression traditionnelle avec détection de typesdecompress.rs: Décompression avec validation d'intégritéimage.rs: Système d'images avec déduplication par blocsprofile.rs: Profils de compression par type de fichiererror.rs: Gestion d'erreurs typée
- Header : Version, métadonnées, statistiques
- Index des blocs : Hash et position de chaque bloc unique
- Données compressées : Blocs zstd dédupliqués
- Métadonnées fichiers : Arborescence et références aux blocs
# Tests unitaires (dans les modules)
cargo test
# Tests avec verbose
cargo test -- --nocapture
# Exemple d'utilisation
cargo run --bin basic_usage| Fonctionnalité | ZippyPack | WinRAR | 7-Zip |
|---|---|---|---|
| Déduplication | ✅ | ❌ | ❌ |
| Accès instantané | ✅ | ❌ | ❌ |
| Progression temps réel | ✅ | ❌ | ❌ |
| Format moderne | ✅ | ❌ | ❌ |
| Cross-platform | ✅ | ❌ | ✅ |
- Projets de développement : node_modules, target/, build/
- Sauvegardes incrémentales : Déduplication massive
- Assets de jeux : Textures et modèles similaires
- Archives de documentation : Fichiers avec patterns répétitifs
- Compression incrémentale
- Montage FUSE pour accès direct
- Interface graphique
- Intégration CI/CD
- Synchronisation cloud optimisée
Les contributions sont les bienvenues ! Consultez les issues pour les tâches en cours.
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
# Générer des fichiers de test
rustc tools/generate_test_files.rs && ./generate_test_files
# Tester la compression
cargo run --release -- create-image --input test_files --output benchmark.zpak --level 22
# Comparer avec d'autres outils
# WinRAR: 268 KB
# 7-Zip: 324 KB
# ZippyPack: 284 KBZippyPack : Parce que chaque byte compte. 🚀