I’m running restic 0.12.0, and rclone 1.54.0. I posted back in December 2019 about similar issues, running whatever was the latest version of both back then (my script auto-updates both via homebrew before backing up). Back then I thought it was just pCloud, and just decided to only prune every 6 months or so (that seemed to be the worst offender). I just realized it’s been corrupting my backups as well (separate issue from restic+rclone, I now realize).
That said, testing restic+rclone with b2 as a backend results in the same connection issues and errors. Only difference is, b2 is smart enough to reject the partial uploads. But when I take rclone out of the picture, everything works fine.
I’ve moved three times and have used three different ISPs since December 2019. I’ve tried it on my office’s fiber connection with 80 MiB/s speeds. If Restic uses Rclone, it gets screwy. Native backends work flawlessly, even when I had a crappy DSL modem at one of my apartments and could only upload at 500-800 KiB/s.
I also know that if I backup to a local drive, and rclone it to either pCloud or B2, it still works flawlessly (even on that crappy DSL connection, though it might take all week). It’s the specific combination of using restic+rclone as a backend that is error prone for me.
I’ve messed with the rclone transfers and the checkers, setting them both all the way down to 1 - didn’t fix the problem.
Wish I knew enough to pour through the code and figure out where the problem lies, but alas, I’d have no idea where to start. I can just tell you where it works for me, and where it doesn’t.
For now I’m rclone syncing my repo from pCloud to B2, so at least I won’t have broken snapshots anymore. It sucks because I have a 4TB lifetime account with pCloud, and have multiple users backing up to my repo from around the US (so local backup + rclone sync won’t work for me). But at the end of the day I need a rock-solid backup, and for me that’s restic with a native backend, and thus far my favorite is B2. Just hate those egress charges for the occasional check --read-data
for peace of mind haha