Arkiv is a convenience library to download, open, consult and extract archives of various format through a single consistent interface.
sample.zip
(requires the zip feature).sample.tar
(requires the tar
feature).sample.tgz
or sample.tar.gz
(requires tar
and gzip
features).sample.tar.xz
(requires tar
and xz
features).sample.tar.bz2
(requires tar
and bzip
features).sample.tar.zstd
or sample.tar.zst
(requires tar
and zstd
features).```rust , no_run use arkiv::{Result, Archive};
fn main() -> Result<()> { // open the archive from a local file let mut archive = arkiv::Archive::open("path/to/archive.tar.xz")?;
// or download it over HTTP(S) - requires the `download` feature.
#[cfg(feature="download")]
let mut archive = {
let url = "https://github.com/meuter/arkiv-rs/raw/main/tests/sample/sample.tar.zstd";
arkiv::Archive::download(url)?
};
// iterate over entries
for entry in archive.entries_iter()? {
let entry = entry?;
println!("{} {}", entry.size(), entry.path().display());
}
// extract the archive (perserves permission on unix targets)
archive.unpack("/tmp/")?;
Ok(())
} ```