Needed to shrink a full directory of QEMU QCOW2 images today that had grown over time with snapshots and general use. While there is information around on the web about it, the focus is on single images and the code provided are just examples.

Here’s a script to keep around that shrinks and compresses all images in a folder, and shows progress:

for imageFile in *.qcow2
    echo "Processing $imageFile"
    mv "$imageFile" "$imageFile.orig"
    qemu-img convert -p -c -O qcow2 "$imageFile.orig" "$imageFile"
echo "Warning: Test images before deleting the .orig files"

For convenience I stuck this in my QEMU image directory and made it executable. Be sure to test images and then delete the “.orig” files to save space.