Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

21.13. virt-diff:列出虚拟机文件间的差异

virt-diff 命令行工具可用于列出两个虚拟机磁盘映像中的文件差异。输出显示了虚拟机运行之后虚拟机磁盘映像的更改。命令也可用于显示覆盖的不同。
注意
您可以在实时虚拟机上安全使用 virt-diff,因为它只需要只读访问。
此工具在文件名、文件大小、校验和、扩展属性、文件内容以及运行的镜像和所选镜像之间找到了差异。
注意
virt-diff 命令不检查引导加载程序、分区或文件系统中未使用的空间,或者"hidden"扇区。因此,建议您不要将此用作安全或取证工具。
要安装 virt-diff,请运行以下命令之一:
# yum install /usr/bin/virt-diff
# yum install libguestfs-tools-c
要指定两个虚拟机,您必须在第一个 guest 中使用 -a-d 选项,第二个客户机使用 -A-D 选项。例如:
$ virt-diff -a old.img -A new.img
您还可以使用 libvirt 已知的名称。例如:
$ virt-diff -d oldguest -D newguest
以下命令选项可与 virt-diff 一起使用:

表 21.3. virt-diff 选项

命令 描述 示例
--help 显示有关特定命令或有关 virt-diff 实用程序的简短帮助条目。详情请查看 virt-diff man page。 virt-diff --help
-a [file] 或 --add [file]
添加 指定的文件,它应该是第一个虚拟机的磁盘镜像。如果虚拟机有多个块设备,您必须为所有这些设备提供单独的 -a 选项。
磁盘镜像的格式被自动探测到。要覆盖此选项并强制使用特定格式,请使用 --format 选项。
virt-customize --add /dev/vms/original.img -A /dev/vms/new.img
-a [URI] 或 --add [URI] 添加远程磁盘。URI 格式与 guestfish 兼容。如需更多信息,请参阅 第 21.4.2 节 “使用 guestfish 添加文件” virt-diff -a rbd://example.com[:port]/pool/newdisk -A rbd://example.com[:port]/pool/olddisk
--all --extra-stats --times --uids --xattrs 相同。 virt-diff --all
--atime 默认情况下,virt-diff 忽略文件访问时间的变化,因为它们不太可能有趣。使用 --atime 选项显示访问时间差异。 virt-diff --atime
-a [file] 添加 指定的文件URI,它应该是第二个虚拟机的磁盘镜像。 virt-diff --add /dev/vms/original.img -A /dev/vms/new.img
-c [URI] 或 --connect [URI] 如果使用 libvirt,则连接到给定的 URI。如果省略,则它连接到默认的 libvirt 管理程序。如果您直接指定 guest 块设备(virt-diff -a),那么根本不使用 libvirt virt-diff -c qemu:///system
--csv 提供采用逗号分隔的值(CSV)格式的结果。此格式可以轻松导入到数据库和电子表格中。有关详情请参考 注意 virt-diff --csv
-d [guest] 或 --domain [guest] 将指定客户机虚拟机中的所有磁盘添加为第一个客户机虚拟机。可以使用域 UUID 而不是域名。 $ virt-diff --domain 90df2f3f-8857-5ba9-2714-7d95907b1c9e
-d [guest] 将指定客户机虚拟机中的所有磁盘添加为第二个客户机虚拟机。可以使用域 UUID 而不是域名。 virt-diff --D 90df2f3f-8857-5ba9-2714-7d95907b1cd4
--extra-stats 显示额外的统计数据。 virt-diff --extra-stats
--format 或 --format=[raw|qcow2] -a/-A 选项的默认值是自动检测磁盘镜像的格式。使用此选项强制使用命令行上的 -a/-A 选项的磁盘格式。使用 --format 自动检测自动探测到后续 -a 选项(请参阅上面的 -a 命令)。 virt-diff --format raw -a new.img -A old.img 为 new.img 和 old.img 强制执行原始格式(no auto-detection),但 virt-diff --format raw -a new.img --format auto -a old.img 会强制使用 raw 格式(无自动探测)用于 new.img,并恢复为 old.img 的 auto-detectionion。如果您有不受信任的原始格式客户机磁盘镜像,则应该使用这个选项指定磁盘格式。这可避免恶意客户端出现潜在的安全问题。
-h 或 --human-readable 以可读格式显示文件大小。 virt-diff -h
--time-days
将更改文件的时间字段显示前的天数(如果在将来使用的话)。
请注意,输出中的 0 表示在将来的 86,399 秒(23 小时、59 分钟和 59 秒)之间。
virt-diff --time-days
-v 或 --verbose 为调试启用详细消息。 virt-diff --verbose
-v 或 --version 显示 virt-diff 版本号并退出。 virt-diff -V
-x 启用 libguestfs API 调用追踪。 virt-diff -x
注意
以逗号分隔的值(CSV)格式可能难以解析。因此,建议对于 shell 脚本,您应该使用 csvtool 和其他语言,使用 CSV 处理库(如 Perl 或 Python 内置 csv 库的 Text::CSV)。另外,大多数电子表格和数据库可直接导入 CSV。
如需更多信息,包括附加选项,请参阅 libguestfs.org