9 unstable releases (4 breaking)
| 0.5.0 | Mar 31, 2026 |
|---|---|
| 0.4.0 | Dec 28, 2025 |
| 0.3.2 | Jan 14, 2025 |
| 0.3.0 | Dec 1, 2024 |
| 0.1.1 | Nov 10, 2024 |
#917 in Filesystem
187 downloads per month
Used in 5 crates
(2 directly)
150KB
3.5K
SLoC
🗜️ Squishy
A convenient wrapper around the backhand library for reading and extracting files from SquashFS filesystems. Provides both a library and CLI tool.
Features
- Read and extract files from SquashFS filesystems
- Traverse filesystem entries
- Handle symlinks with cycle detection
- Search for files using custom predicates
Usage
Add this to your Cargo.toml:
[dependencies]
squishy = "0.2.1"
Example
use squishy::{SquashFS, EntryKind};
use std::path::Path;
// Open a SquashFS file
let squashfs = SquashFS::from_path(&Path::new("example.squashfs"))?;
// List all entries
for entry in squashfs.entries() {
println!("{}", entry.path.display());
}
// Optionally, parallel read with rayon
use rayon::iter::ParallelIterator;
for entry in squashfs.par_entries() {
println!("{}", entry.path.display());
}
// Write file entries to disk
for entry in squashfs.entries() {
if let EntryKind::File(file) = entry.kind {
squashfs.write_file(file, "/path/to/output/file")?;
}
}
// Read a specific file
// Note: the whole file content will be loaded into memory
let contents = squashfs.read_file("path/to/file.txt")?;
License
This project is licensed under the [MIT] License - see the LICENSE file for details.
Dependencies
~12–17MB
~239K SLoC