Nextcloudpi: backup fails, btrfs-transaction takes 100% CPU for hours

Did you set up sync of your snapshots? If so there should be a cron job

/etc/cron.d/ncp-snapsync-auto

that calls

/usr/local/bin/btrfs-sync <from source device snap-shot-dir> <to target device snap-shot-dir>

Just get this line and switch source and target directory and run this command. The very last step is to create a subvolume named data from the very last snapshot (these are usually read only). See also How to backup and restore using nc snapshot.