For the last several years I've very happily used it over SMB to ZFS (with autosnaps) for this very reason, and wrote an AppleScript to automatically "verify" it every week or so.
Once or twice a year it gives a verify error (i imagine this is because a plug gets pulled halfway through a backup on one side or the other), and I just have to go find the last verified date, zfs rollback, and then re-verify. Afterwards it picks up where I left off, and the historical backups are preserved.
Wish it didn't require this extra effort in the first place, but much better than having to nuke and pave every time.
Even better, it's working great over Tailscale so I can even use it remotely. Only big hiccup I ran into was figuring out some ZFS setting about quota vs refquota (something like that) to have the Time Machine's (artificial) space limit match the ZFS quota so that Time Machine would prune the oldest backups appropriately (otherwise the ZFS snapshots took up an unpredictable amount of space and Time Machine would unexpectedly get out of space errors before hitting its space limit).
Once or twice a year it gives a verify error (i imagine this is because a plug gets pulled halfway through a backup on one side or the other), and I just have to go find the last verified date, zfs rollback, and then re-verify. Afterwards it picks up where I left off, and the historical backups are preserved.
Wish it didn't require this extra effort in the first place, but much better than having to nuke and pave every time.
Even better, it's working great over Tailscale so I can even use it remotely. Only big hiccup I ran into was figuring out some ZFS setting about quota vs refquota (something like that) to have the Time Machine's (artificial) space limit match the ZFS quota so that Time Machine would prune the oldest backups appropriately (otherwise the ZFS snapshots took up an unpredictable amount of space and Time Machine would unexpectedly get out of space errors before hitting its space limit).