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 一起使用:
命令 | 描述 | 示例 |
---|---|---|
--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。