Hmm. How about something like:
migrate exec:"rsync file1 file2 ... remote:&& nc remote port"
That can surely work to copy the base files, but it is a task for an
upper level like libvirt. For qemu, copying the copy-on-write data is
enough.
I agree that it can be useful to let an upper level component to copy the
storage
but you will need a way to synchronize with that layer: 1. qemu --> upper
layer:
vm suspended,no more writes to disk.
2. upper layer --> qemu: storage replication is done.
I don't see how without it you will have a valid copy of the storage.
However make use of the copy on write data and cut the amount of
transferred data
can be done only from inside qemu.