I’m still using Duplicity. It’s a command line program, so point #1 is handled by systemd timers, but it does the rest for me. With a udev rule and systemd automount, I even have it so I can swap out the backup drive and take it off-site occasionally.