如何以自动化友好格式编程列出qcow2文件的快照?
解决qemu-img快照列表输出为可自动化处理格式的方法
方法一:使用qemu-img原生JSON输出(推荐)
从QEMU 6.0及以上版本开始,qemu-img snapshot命令支持--output(或短选项-O)参数,可直接输出标准JSON格式:
qemu-img snapshot -l -O json ./image.qcow2
输出示例:
[ { "id": 1, "tag": "appack-init", "vm-size": "3.72 GiB", "date": "2025-10-29 17:43:38", "vm-clock": "0000:01:04.537", "icount": "--" } ]
该格式可直接被Python、jq等自动化工具解析,无需额外处理。
方法二:脚本转换表格输出为CSV/JSON(兼容旧版QEMU)
如果你的QEMU版本低于6.0,没有原生JSON输出支持,可通过文本处理工具转换表格输出:
转换为CSV格式
用awk提取表格字段并生成CSV:
# 仅输出快照数据行 qemu-img snapshot -l ./image.qcow2 | awk 'NR>2 {print $1","$2","$3" "$4","$5" "$6","$7}'
如需包含表头:
(qemu-img snapshot -l ./image.qcow2 | awk 'NR==2 {print "ID,TAG,VM_SIZE,DATE,VM_CLOCK,ICOUNT"} NR>2 {print $1","$2","$3" "$4","$5" "$6","$7}')
输出示例:
ID,TAG,VM_SIZE,DATE,VM_CLOCK,ICOUNT 1,appack-init,3.72 GiB,2025-10-29 17:43:38,0000:01:04.537,--
转换为JSON格式
结合awk和jq生成标准JSON数组:
qemu-img snapshot -l ./image.qcow2 | awk 'NR>2 {printf "{\"id\": %s, \"tag\": \"%s\", \"vm_size\": \"%s %s\", \"date_time\": \"%s %s\", \"vm_clock\": \"%s\", \"icount\": \"%s\"}\n", $1, $2, $3, $4, $5, $6, $7, $8}' | jq -s '.'
内容的提问来源于stack exchange,提问作者yhu420
相关产品推荐
相关产品推荐

