* raid1 on all data. This isn't a backup - it's for end-to-end detection of bit flips in (some of) the storage path (and at rest). This needs a better solution (zfs?)
* zbackup of all selected files to external hard disk, overnight. This handles the de-duplication.
* duplicity of the zbackup dataset to S3, immediately following. This is usually a small upload - zbackup diffs are tiny and it doesn't touch files it doesn't need to.
* Rate limited so full backup is about a week, incrementals usually only a few MB.
It seems to work well so far, and I'm prepared to do a fresh full backup every year, swapping disks periodically. This general idea is to keep data in 3 physical places: local, external and remote. Local can be recovered from external. External can be thrown away and recreated. Remote recreated.
Wish there was an all-in-one solution with all the checkboxes checked. It feels silly to have to get there with a bunch of scripts.