there's like a million ways. ansible, copy /home with btrfs, just make a shell script that rsyncs everything, bare git repo, gnu stow, use nix os, etc.
personally, i just use a shell script to restore everything from an encrypted rclone local backup (although i also backup to a server). i do this because writing the shell script was so easy because my data is very well organized.
that's probably the best advice i can give you -- if your data is well-organized and free of junk (duplicates, broken files, useless files, etc) then that goes a long way towards streamlining any restore scheme.