Sparse files are nice to use to store virtual machine’s virtual disks but can be a real pain in the ass to backup efficiently, especially over the network.
Luckily rsync provides a way to intelligently copy sparse files both locally and over the network.
The trick is use –sparse and –inplace options.
Let’s say we have a sparse 60 GB qemu virtual disk with only around 7 GB used:
$ ls -lh fedora24.qcow2 -rw------- 1 root root 61G Nov 8 19:11 fedora24.qcow2 $ du -h fedora24.qcow2 7.2G fedora24.qcow2
The first thing to note is that ls does not recognize sparse files while du does.
The first time a file is copied use the –sparse option:
$ rsync -avP --sparse fedora24.qcow2 root@remotemachine:/tmp
Every other time use –inplace to tell rsync to copy only the blocks that actually changed since the last copy:
$ rsync -avP --inplace fedora24.qcow2 root@remotemachine:/tmp