1virt-diff(1)                Virtualization Support                virt-diff(1)
2
3
4

NAME

6       virt-diff - Differences between files in two virtual machines
7

SYNOPSIS

9        virt-diff [--options] -d domain1 -D domain2
10
11        virt-diff [--options] -a disk1.img [-a ...] -A disk2.img [-A ...]
12

DESCRIPTION

14       "virt-diff" lists the differences between files in two virtual machines
15       or disk images.  The usual use case is to show the changes in a VM
16       after it has been running for a while, by taking a snapshot, running
17       the VM, and then using this tool to show what changed between the new
18       VM state and the old snapshot.
19
20       This tool will find differences in filenames, file sizes, checksums,
21       extended attributes, file content and more from a virtual machine or
22       disk image.  However it does not look at the boot loader, unused space
23       between partitions or within filesystems, "hidden" sectors and so on.
24       In other words, it is not a security or forensics tool.
25
26       To specify two guests, you have to use the -a or -d option(s) for the
27       first guest, and the -A or -D option(s) for the second guest.  The
28       common case is:
29
30        virt-diff -a old.img -A new.img
31
32       or using names known to libvirt:
33
34        virt-diff -d oldguest -D newguest
35

OPTIONS

37       --help
38           Display brief help.
39
40       -a file
41       --add file
42           Add file which should be a disk image from the first virtual
43           machine.  If the virtual machine has multiple block devices, you
44           must supply all of them with separate -a options.
45
46           The format of the disk image is auto-detected.  To override this
47           and force a particular format use the --format=.. option.
48
49       -a URI
50       --add URI
51           Add a remote disk.  See "ADDING REMOTE STORAGE" in guestfish(1).
52
53       --all
54           Same as --extra-stats --times --uids --xattrs.
55
56       --atime
57           The default is to ignore changes in file access times, since those
58           are unlikely to be interesting.  Using this flag shows atime
59           differences as well.
60
61       -A file
62       -A URI
63           Add a disk image from the second virtual machine.
64
65       --checksum
66       --checksum=crc|md5|sha1|sha224|sha256|sha384|sha512
67           Use a checksum over file contents to detect when regular files have
68           changed content.
69
70           With no argument, this defaults to using md5.  Using an argument,
71           you can select the checksum type to use.  If the flag is omitted
72           then file times and size are used to determine if a file has
73           changed.
74
75       -c URI
76       --connect URI
77           If using libvirt, connect to the given URI.  If omitted, then we
78           connect to the default libvirt hypervisor.
79
80           If you specify guest block devices directly (-a), then libvirt is
81           not used at all.
82
83       --csv
84           Write out the results in CSV format (comma-separated values).  This
85           format can be imported easily into databases and spreadsheets, but
86           read "NOTE ABOUT CSV FORMAT" below.
87
88       --dir-links
89           The default is to ignore changes in the number of links in
90           directory entries, since those are unlikely to be interesting.
91           Using this flag shows changes to the nlink field of directories.
92
93       --dir-times
94           The default is to ignore changed times on directory entries, since
95           those are unlikely to be interesting.  Using this flag shows
96           changes to the time fields of directories.
97
98       -d guest
99       --domain guest
100           Add all the disks from the named libvirt guest, as the first guest.
101           Domain UUIDs can be used instead of names.
102
103       -D guest
104           Add all the disks from the named libvirt guest, as the second
105           guest.  Domain UUIDs can be used instead of names.
106
107       --echo-keys
108           When prompting for keys and passphrases, virt-diff normally turns
109           echoing off so you cannot see what you are typing.  If you are not
110           worried about Tempest attacks and there is no one else in the room
111           you can specify this flag to see what you are typing.
112
113       --extra-stats
114           Display extra stats.
115
116       --format=raw|qcow2|..
117       --format
118           The default for the -a/-A option is to auto-detect the format of
119           the disk image.  Using this forces the disk format for -a/-A
120           options which follow on the command line.  Using --format with no
121           argument switches back to auto-detection for subsequent -a/-A
122           options.
123
124           For example:
125
126            virt-diff --format=raw -a disk.img [...]
127
128           forces raw format (no auto-detection) for disk.img.
129
130            virt-diff --format=raw -a disk.img --format -a another.img [...]
131
132           forces raw format (no auto-detection) for disk.img and reverts to
133           auto-detection for another.img.
134
135           If you have untrusted raw-format guest disk images, you should use
136           this option to specify the disk format.  This avoids a possible
137           security problem with malicious guests (CVE-2010-3851).
138
139       -h
140       --human-readable
141           Display file sizes in human-readable format.
142
143       --key SELECTOR
144           Specify a key for LUKS, to automatically open a LUKS device when
145           using the inspection.  "SELECTOR" can be in one of the following
146           formats:
147
148           --key "DEVICE":key:KEY_STRING
149               Use the specified "KEY_STRING" as passphrase.
150
151           --key "DEVICE":file:FILENAME
152               Read the passphrase from FILENAME.
153
154       --keys-from-stdin
155           Read key or passphrase parameters from stdin.  The default is to
156           try to read passphrases from the user by opening /dev/tty.
157
158       --times
159           Display time fields.
160
161       --time-days
162           Display time fields as days before now (negative if in the future).
163
164           Note that 0 in output means "up to 1 day before now", or that the
165           age of the file is between 0 and 86399 seconds.
166
167       --time-relative
168           Display time fields as seconds before now (negative if in the
169           future).
170
171       --time-t
172           Display time fields as seconds since the Unix epoch.
173
174       --uids
175           Display UID and GID fields.
176
177       -v
178       --verbose
179           Enable verbose messages for debugging.
180
181       -V
182       --version
183           Display version number and exit.
184
185       -x  Enable tracing of libguestfs API calls.
186
187       --xattrs
188           Display extended attributes.
189

NOTE ABOUT CSV FORMAT

191       Comma-separated values (CSV) is a deceptive format.  It seems like it
192       should be easy to parse, but it is definitely not easy to parse.
193
194       Myth: Just split fields at commas.  Reality: This does not work
195       reliably.  This example has two columns:
196
197        "foo,bar",baz
198
199       Myth: Read the file one line at a time.  Reality: This does not work
200       reliably.  This example has one row:
201
202        "foo
203        bar",baz
204
205       For shell scripts, use "csvtool" (https://github.com/Chris00/ocaml-csv
206       also packaged in major Linux distributions).
207
208       For other languages, use a CSV processing library (eg. "Text::CSV" for
209       Perl or Python’s built-in csv library).
210
211       Most spreadsheets and databases can import CSV directly.
212

EXIT STATUS

214       This program returns 0 if successful, or non-zero if there was an
215       error.
216

SEE ALSO

218       guestfs(3), guestfish(1), virt-cat(1), virt-copy-out(1), virt-ls(1),
219       virt-tar-out(1), http://libguestfs.org/.
220

AUTHOR

222       Richard W.M. Jones http://people.redhat.com/~rjones/
223
225       Copyright (C) 2009-2019 Red Hat Inc.
226

LICENSE

228       This program is free software; you can redistribute it and/or modify it
229       under the terms of the GNU General Public License as published by the
230       Free Software Foundation; either version 2 of the License, or (at your
231       option) any later version.
232
233       This program is distributed in the hope that it will be useful, but
234       WITHOUT ANY WARRANTY; without even the implied warranty of
235       MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
236       General Public License for more details.
237
238       You should have received a copy of the GNU General Public License along
239       with this program; if not, write to the Free Software Foundation, Inc.,
240       51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
241

BUGS

243       To get a list of bugs against libguestfs, use this link:
244       https://bugzilla.redhat.com/buglist.cgi?component=libguestfs&product=Virtualization+Tools
245
246       To report a new bug against libguestfs, use this link:
247       https://bugzilla.redhat.com/enter_bug.cgi?component=libguestfs&product=Virtualization+Tools
248
249       When reporting a bug, please supply:
250
251       ·   The version of libguestfs.
252
253       ·   Where you got libguestfs (eg. which Linux distro, compiled from
254           source, etc)
255
256       ·   Describe the bug accurately and give a way to reproduce it.
257
258       ·   Run libguestfs-test-tool(1) and paste the complete, unedited output
259           into the bug report.
260
261
262
263libguestfs-1.40.2                 2019-02-07                      virt-diff(1)
Impressum