Well, kind of
For every backup run, restic basically does 2 things:
- Scan for all the files which need to be included for this backup
- Chunk the files and save them to the repository
The first part has to be run always as restic needs to have accurate information (files might have changed since last backup run) of all the files that you want to backup. This step might take some time if there is no ‘parent’ snapshot. A ‘parent’ snapshot is a previous snapshot of same ‘type’ (usually same hostname and path). Once there is a parent snapshot to rely on, the scan for new/changed files is pretty fast.
In the 2nd step all files are saved to the repository (local or remote). Restic checks if a file (or parts of it) has already been saved to the repository. If the files already exists nothing new is (uploaded and) saved except for metadata of the file. If the file is new or changed it will (uploaded and) saved as usual.
In your case it might look like restic is starting from scratch as a full rescan needs to be done. But the 2nd part will basically start where it was left.
Note that this is a very basic overview of how restic works and parts of it might be technically incorrect. I just wanted to give you an idea of what’s going on.