Changing missing blobs, but nothing changes

I am syncing a repo with Syncthing. When I try to check it on the machine that it synced to, I get informed that there is a blob missing. I was assuming that the sync has not finished. However, what is weird is that every time I check, another blob is reported, and that happens even when Syncthing is paused. Like this:

$ restic --verbose stats --mode raw-data
repository eb2726b0 opened (version 2, compression level auto)
[0:01] 100.00%  196 / 196 index files loaded
scanning...
blob <data/9256ebd7> not found
$ restic --verbose stats --mode raw-data
repository eb2726b0 opened (version 2, compression level auto)
[0:01] 100.00%  196 / 196 index files loaded
scanning...
blob <data/e1e1a7c1> not found
$ restic --verbose stats --mode raw-data
repository eb2726b0 opened (version 2, compression level auto)
[0:02] 100.00%  196 / 196 index files loaded
scanning...
blob <data/21012e67> not found
$ restic version
restic 0.18.1 compiled with go1.25.6 X:nodwarf5 on linux/amd64

Why is it reporting a new missing blob even if nothing has changed in the repo? (at least that’s my assumption – Synchting is paused)

I am syncing other repos with Syncthing too, and there the issue does not exist.

Most likely some part of this operation is multi-threaded, and if any thread runs into an error, the whole process stops there, so you might see many different missing blobs based on which thread runs into that problem first.

Thanks for the explanation! So, after running it a few times, I expect it to report an already reported missing blob again. And indeed that is what happens (455d37e0 below):

$ restic --verbose stats --mode raw-data
repository eb2726b0 opened (version 2, compression level auto)
[0:00] 100.00%  197 / 197 index files loaded
scanning...
blob <data/bbf50b47> not found
$ restic --verbose stats --mode raw-data
repository eb2726b0 opened (version 2, compression level auto)
[0:00] 100.00%  197 / 197 index files loaded
scanning...
blob <data/21012e67> not found
$ restic --verbose stats --mode raw-data
repository eb2726b0 opened (version 2, compression level auto)
[0:00] 100.00%  197 / 197 index files loaded
scanning...
blob <data/36233480> not found
$ restic --verbose stats --mode raw-data
repository eb2726b0 opened (version 2, compression level auto)
[0:00] 100.00%  197 / 197 index files loaded
scanning...
blob <data/a77c5717> not found
$ restic --verbose stats --mode raw-data
repository eb2726b0 opened (version 2, compression level auto)
[0:00] 100.00%  197 / 197 index files loaded
scanning...
blob <data/455d37e0> not found
$ restic --verbose stats --mode raw-data
repository eb2726b0 opened (version 2, compression level auto)
[0:00] 100.00%  197 / 197 index files loaded
scanning...
blob <data/733db673> not found
$ restic --verbose stats --mode raw-data
repository eb2726b0 opened (version 2, compression level auto)
[0:00] 100.00%  197 / 197 index files loaded
scanning...
blob <data/1eaa4d61> not found
$ restic --verbose stats --mode raw-data
repository eb2726b0 opened (version 2, compression level auto)
[0:00] 100.00%  197 / 197 index files loaded
scanning...
blob <data/b517547b> not found
$ restic --verbose stats --mode raw-data
repository eb2726b0 opened (version 2, compression level auto)
[0:00] 100.00%  197 / 197 index files loaded
scanning...
blob <data/455d37e0> not found

It’s just so weird that syncing of this Restic backup never finishes. All my other files, including those in several Restic repos, sync fine with Syncthing.

Does this restic stats command finish on the machine you are syncing from?

Yes, it does. I figured it’s a weird syncing issue with Syncthing.

It probably is a Syncthing issue, yes.

As a side note, syncing your repository is probably a bad idea if that is part of your backup strategy. If a malicious process deletes or encrypts (think ransomware) the repo contents on the server, it will dutifully sync the changes to the other machine, and your backups will be lost.

A nightly rclone copy --immutable that is executed on the receiving machine would be a better idea.

1 Like

Thanks for pointing that out. I’m aware of that. These backups get backed up by Restic append-only to another system, a Hetzner storage box, several times per day. I only use Syncthing so that I also have a copy of the backups locally on my mobile computer, from which I do regular backups to an external disk.

If ransomware would destroy the backup, I could restore it from the Hetzner storage box, or from an external disk.

(Restic backing up Restic, yes. But these backups are fairly small, basically configurations of my machines.)