Back on topic: the pull vs push debate. I am leaning push with restic after reading this thread. The TOS angle from @torontofields worries me though.
Backup strategy for 10 cheap VPS spread across 5 continents?
OVHcloud storage VPS terms explicitly allow backup workloads — I have that in writing from 2023: https://www.ovhcloud.com/en/vps/
For the cron vs systemd timer question nobody asked: systemd timers give you `OnFailure=` alerting natively. Cron needs a wrapper. With 10 nodes, you want the failure path to be automatic.
Actually I will try restic. Where is good tutorial for beginner ?
OP if your no-name is UOL or similar, push backups will hurt. Pull lets you control when the pain happens.
Debian stable here. restic is in backports, not stable. If you want stable-only, borg 1.2.4 is in bookworm and works fine. I run borg to a Hetzner Storage Box, 500GB for 3 EUR. No egress charges because Hetzner internal traffic is free if your source is Hetzner cloud.
But OP has five providers, so internal-free does not help.
This thread needs more ZFS. Send incremental snapshots with `zfs send`, receive with `zfs receive`. Native compression, native encryption, point-in-time recovery that actually means something.
Yes, you need a ZFS target. Yes, that limits your providers. Hetzner and OVHcloud both let you run ZFS on dedicated or storage instances. Vultr block storage does not expose ZFS directly, you are stuck on ext4.
I run ZFS send to a Hetzner Storage Box mounted via SSHFS. It is weird but it works. Snapshots every 15 minutes, retained for a month.
I run Docker on all ten of my nodes and use duplicati in a container for push backups. Web UI, schedules, notifications to Discord. Not as efficient as restic but I can delegate it to people who do not know SSH.
Downside: duplicati's database gets corrupted if you look at it wrong. I have rebuilt mine four times.
Following this thread from Perth. I have three VPS on Vultr Sydney, Hetzner Singapore, and Contabo Sydney. The Contabo to Hetzner path is painful, 150ms and variable loss. Push backups stall, pull is worse.
I solved it with `mosh` for interactive and `rsync --partial` for bulk, but restic's retry logic handles the stalls better than raw rsync. restic 0.16+ has much better resume — I use https://restic.net for that.