How can I convert an ext4 partition to btrfs (or other file systems) without losing data?

If you install btrfs-tools with sudo apt-get install btrfs-tools, then the btrfs-convert command is made available to you.

First run an fsck:

sudo fsck.ext3 -f /dev/xxx

Then, convert!

sudo btrfs-convert /dev/xxx

To rollabck, run:

sudo btrfs-convert -r /dev/xxx

To clean up a bit of space, and make the conversion permanent, delete /ext2_saved/image on the partition.

Of course, while this is a relatively safe procedure as only 1 MB needs to be moved, and the original Ext2/3/4 FS is available as an image, it is up to you to decide whether to back up. As with any filesystem operations, there is an inherent risk of data loss.

Your data stays in place, as well as your Ext4 metadata. However, the first 1 MB is moved, and a series of BTRFS metadata is created within Ext4 free space.

Partial ref: https://btrfs.wiki.kernel.org/index.php/Conversion_from_Ext3