# virt-diff

`virt-diff` is a tool provided by the **libvirt** suite for comparing virtual machine (VM) disk images or snapshots. This tool allows administrators to identify the differences between two virtual machine disk images, which is useful for tasks such as checking changes between backups, comparing versions of a virtual disk, or verifying updates to virtual machines.

#### Key Features of `virt-diff`

* **Compare Disk Images**: `virt-diff` can compare two disk images, highlighting any differences between them.
* **Snapshot Comparison**: It can also be used to compare different snapshots of the same virtual machine disk image.
* **Filesystem Inspection**: The tool provides an inspection of the files and directories in two disk images to identify what has been added, removed, or changed between them.
* **Efficient Analysis**: This is particularly helpful for understanding changes in the virtual machine, such as configuration changes, added files, or deleted content between different disk states.

#### Basic Syntax

```bash
virt-diff [options] disk_image_1 disk_image_2
```

* **disk\_image\_1**: The first disk image to compare.
* **disk\_image\_2**: The second disk image to compare.

#### Common Options

* `-a, --add`: Add one or more disk images to the comparison.
* `-l, --long`: Display a long listing, including the file sizes and additional information.
* `-m, --mount`: Display the mount points for the filesystems in the images.
* `-t, --type`: Filter the output by specific filesystem types (e.g., `ext4`, `xfs`).
* `-h, --help`: Display help information about the command.

#### Common Use Cases for `virt-diff`

1.  **Compare Two Disk Images**:

    You can compare two disk images (e.g., two snapshots or different versions of a VM's disk image):

    ```bash
    virt-diff /path/to/disk-image1.qcow2 /path/to/disk-image2.qcow2
    ```

    This will display the differences between the two disk images, such as added or deleted files and directories.
2.  **Compare Snapshots of a Virtual Machine**:

    If you have taken multiple snapshots of the same virtual machine, you can compare the changes between those snapshots:

    ```bash
    virt-diff /path/to/snapshot1.qcow2 /path/to/snapshot2.qcow2
    ```

    This allows you to see what has changed between the two snapshots.
3.  **List the Files and Changes in the Disk Images**:

    To get a long listing of the changes, you can use the `-l` option to display more details, such as file sizes and attributes:

    ```bash
    virt-diff -l /path/to/disk-image1.qcow2 /path/to/disk-image2.qcow2
    ```
4.  **Filter Differences by Filesystem Type**:

    If you are only interested in filesystems of a specific type, such as `ext4`, you can use the `-t` option to filter the output:

    ```bash
    virt-diff -t ext4 /path/to/disk-image1.qcow2 /path/to/disk-image2.qcow2
    ```

#### Example Output

*   **Example 1**: Compare two disk images:

    ```bash
    virt-diff /path/to/disk-image1.qcow2 /path/to/disk-image2.qcow2
    ```

    **Output**:

    ```
    /dev/sda1: Filesystem added
    /dev/sda2: Filesystem removed
    /home/user/file1.txt: File modified
    ```

    This output shows that a filesystem has been added or removed and that a file (`file1.txt`) has been modified between the two disk images.
*   **Example 2**: Long listing of differences:

    ```bash
    virt-diff -l /path/to/disk-image1.qcow2 /path/to/disk-image2.qcow2
    ```

    **Output**:

    ```
    /dev/sda1: ext4, size: 100G, mount point: /
    /home/user/file1.txt: modified, size: 20K
    /home/user/file2.txt: added, size: 30K
    ```

#### Why Use `virt-diff`?

* **Efficient Change Tracking**: `virt-diff` makes it easy to track changes between disk images or VM snapshots, which can be crucial for troubleshooting, backups, or auditing.
* **Quick Comparison**: It allows you to quickly understand what files or partitions have been added, deleted, or modified, without needing to manually inspect each disk image.
* **Snapshot Analysis**: For VM snapshots, it provides a straightforward way to assess differences, which is particularly useful when managing long-running virtual machines that undergo multiple changes over time.
* **Backup Validation**: By comparing current disk images with older backups, you can verify whether changes have occurred between backup and current states.

#### Conclusion

`virt-diff` is a valuable tool for administrators working in virtualized environments. It simplifies the task of comparing VM disk images and snapshots, allowing for a clear view of what has changed between different versions of a virtual machine's disk. Whether you're managing backups, troubleshooting issues, or simply auditing changes, `virt-diff` offers a quick and effective way to compare virtual machine disk images.
