···11# bindle-file
2233-[bindle](https://en.wikipedia.org/wiki/Bindle) is a general purpose binary archive
44-format for collecting files.
33+[bindle](https://en.wikipedia.org/wiki/Bindle) is a general purpose binary archive format for collecting files.
44+55+The format uses memory-mapped I/O for fast reads, optional zstd compression, and supports append-only writes with shadowing for updates. Files can be added incrementally without rewriting the entire archive.
66+77+## Usage
88+99+```rust
1010+use bindle_file::{Bindle, Compress};
1111+1212+// Create or open an archive
1313+let mut archive = Bindle::open("data.bndl")?;
1414+1515+// Add files
1616+archive.add("config.json", data, Compress::None)?;
1717+archive.save()?;
1818+1919+// Read files
2020+let data = archive.read("config.json").unwrap();
2121+2222+// Update by shadowing (old data remains until vacuum)
2323+archive.add("config.json", new_data, Compress::None)?;
2424+archive.save()?;
2525+2626+// Reclaim space from shadowed entries
2727+archive.vacuum()?;
2828+```
2929+3030+## CLI
3131+3232+The `bindle` command provides basic operations:
3333+3434+```bash
3535+bindle add archive.bndl file.txt
3636+bindle read archive.bndl file.txt
3737+bindle list archive.bndl
3838+bindle vacuum archive.bndl
3939+```
4040+4141+## Format
4242+4343+See [SPEC.md](SPEC.md) for the binary format specification.