4个版本 (2个破坏性版本)

0.3.1 2023年5月9日
0.3.0 2023年5月9日
0.2.0 2021年10月6日
0.1.0 2021年8月31日

#14 in #disk-image

每月下载量 30次

MITLGPL-3.0-or-later

250KB
1.5K SLoC

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)
      • 集群查找缓存,缓存未命中时回溯
      • 允许在客户机内任意定位
    • 支持“递归”qcow,其中磁盘作为后端文件存储的qcow

命令行界面

还有一个用于与qcow交互的CLI。

qcow-cli 0.2.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

依赖项

~26–36MB
~491K SLoC