If I’ve understood the code correctly, restic will (re)create packs locally in a tmp dir, and then
Backend.Save() will generally short-circuit the upload/save procedure if the pack’s hash already exists in
the repo. So it’s examining every byte of every file being backed up, and writing all of it to temp files, every single time, regardless of whether the file has changed or not. Is this correct?
Do other backup programs generally behave this way, or do they ignore files “older” than the previous backup? I guess to be completely sure you have accurately captured the data on disk, you can’t rely on the file create/modify time, since technically they can be altered.
I’m not saying restic is doing anything wrong or unusual, but I wonder how this compares to other programs like Time Machine, rsync, Backblaze, etc. (I understand you’re not the author of those programs, but maybe someone who knows can comment?)
One thing that jumps to mind is the fact that every “incremental” backup writes 100% of your data to your local disk, which over time might have some impact on SSD write cycles (maybe that’s an outdated concern on modern hardware?)
Thanks in advance for any insight you can provide.