3 stable releases
1.2.0 | Oct 6, 2021 |
---|---|
1.1.0 | Aug 30, 2021 |
1.0.0 | Aug 27, 2021 |
#1748 in Parser implementations
26 downloads per month
Used in qcow-cli
51KB
804 lines
qcow-rs
A Rust library for working with qcow images.
Example
// open qcow
let qcow = qcow::open(PATH).unwrap();
// print out list of snapshots in the qcow
for snapshot in qcow.snapshots() {
println!(
"Snapshot {:?}: {:?} (size = {})",
snapshot.unique_id,
snapshot.name,
snapshot.vm_state_size
);
}
// create a reader for accessing the virtual hard disk
let mut file = BufReader::new(File::open(PATH)?);
let qcow2 = qcow.unwrap_qcow2();
let mut reader = qcow2.reader(&mut file);
// read the first 10 bytes of the virtual hard disk
let mut buf = [0; 10];
reader.read_exact(&mut buf)?;
Library Features
- Parse qcow files
- Full qcow version 1 support
- Support for parsing the header and some associated data
- Full qcow version 2-3 support
- Header parsing, including extra version 3 header data
- Header extension parsing, allowing you to use addition data they provide
- Lookup table (L1 and L2) parsing, only loading L2 tables on demand
- Snapshot parsing, including snapshot L1 lookup tables
- Support for reading the contents of the virtual disk
- Includes compression support (for both zlib and zstd)
- Cluster lookup caching, backtracking on cache miss
- Allows arbitrary seeking within the guest
Command Line Interface
Also present is a cli for interfacing with qcows.
qcow-cli 0.1.0
A utility for querying information about qcow files
USAGE:
qcow <qcow> <SUBCOMMAND>
FLAGS:
-h, --help Prints help information
-V, --version Prints version information
ARGS:
<qcow>
SUBCOMMANDS:
get-file Output a file within the qcow to stdout
help Prints this message or the help of the given subcommand(s)
info Output info about the given qcow
partitions Display a list of partitions in the qcow image
tree Display a tree listing of the contents of the qcow
Install
cargo install qcow-cli
Screenshots
Listing info about the qcow:
Viewing the file tree:
Viewing the image partitions:
Extracting or viewing a file using get-file:
Dependencies
~6MB
~120K SLoC