3 个稳定版本

1.2.0 2021 年 10 月 6 日
1.1.0 2021 年 8 月 30 日
1.0.0 2021 年 8 月 27 日

#15 in #disk-image


用于 qcow-cli

MIT 许可证

51KB
804

qcow-rs

docs.rs/qcow crates.io 100% documented MIT Licensed

用于处理 qcow 图像的 Rust 库。

示例

// 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)?;

库功能

  • 解析 qcow 文件
  • 完全支持 qcow 版本 1
    • 支持解析头和一些相关数据
  • 完全支持 qcow 版本 2-3
    • 解析头,包括额外的版本 3 头数据
    • 解析头扩展,允许您使用它们提供的附加数据
    • 查找表(L1 和 L2)解析,仅按需加载 L2 表
    • 解析快照,包括快照 L1 查找表
    • 支持读取虚拟磁盘的内容
      • 包括压缩支持(zlib 和 zstd 都支持)
      • 集群查找缓存,缓存未命中时回溯
      • 允许在虚拟机内任意定位

命令行界面

还提供了一个用于与 qcows 交互的 cli。

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

安装

cargo install qcow-cli

截图

列出 qcow 的信息

info command

查看文件树

tree command

查看图像分区

partitions command

使用 get-file 提取或查看文件

get-file command

依赖项

~5MB
~96K SLoC