[Libguestfs] New tool proposal
Wanlong Gao
gaowanlong at cn.fujitsu.com
Wed May 23 08:45:22 UTC 2012
On 05/22/2012 08:15 PM, Richard W.M. Jones wrote:
> On Tue, May 22, 2012 at 08:01:50PM +0800, Wanlong Gao wrote:
>> So, you means we can use virt-ls to list the different files list, and then
>> use virt-cat to see the different between two single files?
>
> Yes, this is what I usually do.
>
> For example:
>
> $ qemu-img create -f qcow2 -b /dev/vg_pin/F16x64 cloned-f16.img
> Formatting 'cloned-f16.img', fmt=qcow2 size=21474836480 backing_file='/dev/vg_pin/F16x64' encryption=off cluster_size=65536
>
> $ qemu-kvm -hda cloned-f16.img -m 1024
> [boot it, shut it down]
>
> $ virt-ls -lR -a /dev/vg_pin/F16x64 / > original.files # *
> $ virt-ls -lR -a cloned-f16.img / > modified.files
>
> $ diff -u original.files modified.files
> --- original.files 2012-05-22 13:11:00.949456251 +0100
> +++ modified.files 2012-05-22 13:11:38.248133406 +0100
> @@ -1651,7 +1651,7 @@
> - 0644 373 /etc/rearj.cfg
> l 0777 14 /etc/redhat-release -> fedora-release
> - 0644 1787 /etc/request-key.conf
> -- 0644 79 /etc/resolv.conf
> +- 0644 74 /etc/resolv.conf
> l 0777 11 /etc/rmt -> ../sbin/rmt
> - 0644 1615 /etc/rpc
> d 0755 4096 /etc/rpm
> @@ -32090,6 +32090,7 @@
> d 0775 4096 /sys
> d 1777 4096 /tmp
> d 1777 4096 /tmp/.ICE-unix
> +s 0777 0 /tmp/.ICE-unix/1061
> s 0777 0 /tmp/.ICE-unix/1085
> d 1777 4096 /tmp/.Test-unix
> d 1777 4096 /tmp/.X11-unix
> @@ -207760,7 +207761,7 @@
> - 0644 28 /var/lib/AccountsService/users/rjones
> d 0755 4096 /var/lib/NetworkManager
> - 0644 87 /var/lib/NetworkManager/NetworkManager.state
> -- 0644 1454 /var/lib/NetworkManager/timestamps
> +- 0644 1502 /var/lib/NetworkManager/timestamps
> d 0755 4096 /var/lib/PackageKit
> - 0644 9216 /var/lib/PackageKit/transactions.db
> d 0755 4096 /var/lib/alsa
>
> [etc etc]
>
> However there are some shortcomings. It won't find differences in:
>
> - filesystem metadata
> - bootloaders or other information outside the regular filesystem
> - inside the Windows Registry (it'll just say the two binary
> blobs are different)
>
> Rich.
>
> * You don't need the --checksum option unless files are modified but
> keep the same size, in which case you have to examine the complete
> content of each file. Using --checksum is much slower. 'virt-ls'
> has other options that you may want to look at.
>
Hi Rich,
Kame gave me a very good detail about the use case of virt-diff example, now
quoted them for you,
> Anyway, in above scheme, we cannot compare the files of the same size.
> For example
>
> In guest 01:
> # cat /etc/sysconfig/network
> NETWORKING=yes
> HOSTNAME=guest01
> GATEWAY=10.124.196.1
>
> In guest02:
> # cat /etc/sysconfig/network
> NETWORKING=yes
> HOSTNAME=guest02
> GATEWAY=10.124.196.1
>
>
> You need to diff even if you have file lists.
>
> BTW, what we'd like to compare is the contents of file, not meta-data.
>
> In another point of view....
>
> In your example in mailing list, you compares 2 files.
>
> But, now, I _think_ what users really want is a command like following.
>
> Following command is comparing guest's file of Guest01...Guest04 with Guest00.
>
> # virt-diff -seed Guest00 -name Guest01 -name Guest02 -name Guest03 -name Guest04 /etc/hogehoge
> Guest03:/etc/hogehoge is differ.
> diff result...
>
> In this case, only Guest03 has a different contents of the file.
>
> For system-admin, this means...
> - Guest00,01,02,04 are correct and 03 is wrong
> or
> - Guest03 is correct and Guest00,01,02,04 are wrong.
> or
> - Guest03 has different settings intentionally and he confirmed that.
>
> This command will be very good for system-admin.
Then, any thoughts about this tool ?
and more thoughts about implementing this ?
We should implement a "diff" wrapper in the guestfsd, and use this API when
implementing this tool or any other methods?
Thanks,
Wanlong Gao
More information about the Libguestfs
mailing list