- Use the venerable
ddfor an exact duplicate btrfstune -u <newdev>will create a new UUID for the clone.
Option 1 - Data copy then change UUID
You are guaranteed to get corruption if you mountEnsure that source partition is unmounted and will not be automounted.
Use either filesystem rwdd until step 2 finishes :(slow, dumb) or partclone.btrfs -b -s /dev/src -o /dev/target
Use btrfstune -u to change UUID after copy and before mounting.
Data loss warning: Do NOT try to (auto)mount either original or copy until the UUID has changed
Option 2 - btrfs-clone
I have not personally tried btrfs-clone, but it purports to clone an existing BTRFS file system to a new one, cloning each subvolume in order.