makes it possible to restore an application exactly from where it was suspended.

The migration framework we present uses accessible tools that already exist in container and VM technology. In LXC, this goes by the name of *checkpointing*, and in KVM, *saving*. Both methods suspend the guest OS (at which point the service is temporarily stopped) and save down the in-memory state of the guest OS into one or more files that can be easily transferred. Complementary tools exist to restore the guest OS from their checkpoint (or save).

After the in-memory state is saved into files, the next step is to use a file transfer protocol to transfer the guest OS’s filesystem (i.e., all files saved on the hard disk of the guest OS) and saved in-memory state[^5]. For this we use incremental file synchronization, namely in the form of *rsync* – a well-known file syncing tool ([rsync.samba.org](rsync.samba.org)), to compress and transfer files. A major difference of incremental file synchronization over other basic file transfer protocols is its ability to identify and transfer only those files, or parts thereof, which are different from those already located at the destination. This can substantially reduce the amount of data that needs 