I'm struggling to implement a very similar system. I got it to work, but I still want to tweak this and that (see this more general question: systemd - umount device after service which depends on it finishes).
Here's a working solution to your problem:
backup.service
[Unit]
Description=<DESCRIPTION HERE>
BindsTo=<STORAGE DEVICE UNIT HERE>.device mnt-backup.mount
After=<STORAGE DEVICE UNIT HERE>.device mnt-backup.mount
[Service]
ExecStart=<CALL TO BACKUP SCRIPT HERE>
Note: to get a list of the storage device units use systemctl list-units --all --full | grep disk
You might want to add RefuseManualStart=yes under [Unit] too.
mnt-backup.mount
[Unit]
DefaultDependencies=no
Conflicts=umount.target
Before=umount.target
[Mount]
What=/dev/disk/by-uuid/<DEVICE UUID HERE>
Where=/mnt/backup
Type=<FILESYSTEM HERE>
You pretty much got here, now to automaticaly start backup.service, we will be using a udev rule.
Here also you might want to add RefuseManualStart=yes under [Unit].
90-backup.rules
KERNEL=="sd*", ATTRS{serial}=="<HD SERIAL HERE>", TAG+="systemd", ENV{SYSTEMD_WANTS}+="backup.service"
Note: to get a list of the attributes of your specific device, include its serial number, use udevadm info -a -n /dev/sd*