Very confused about CCC’s snapshots. If you could help me to understand it, I would appreciate it.
To seek your help, I have constructed the following example to test my understanding to see if correct.
My understanding is that an APFS’s Snapshot is a picture of the Mac’s current state of the file structure. It also put a lock on each and every files preventing each from being modified. A file is free to be modified again when the corresponding snapshot is deleted provided there is no other snapshot controlling the same file. With this property, a snapshot can recreate the state of the Mac to the state when the snapshot was taken.
Also In APFS, changes made on a file (delta file df) is stored at a different location from the original location. These two files are separate files.
My CCC backup drive as well as the Macintosh HD are both SSD. In CCC, I enabled snapshot support for both.
On day 0(D0), the new Mac has Yosemite (call it state S0) then I do the first CCC backup so on my backup disk it has S0. When the backup is completed, CCC takes a snapshot of the destination drive, called it destination-snapshot(D0). It prevents S0 from being modified. Future CCC backups are not allowed to modify any file in S0.
On day 1, I make changes to some files. Lumping all these changes together and call it dS1. The mac’s state is represented by S1=S0+dS1. Also time machine makes 10 snapshots on the Macintosh HD, called them source-snapshot1(D1),...., source-snapshot10(D1). I then do a CCC backup. The CCC destination-snapshot(D1) should consist of S1 (=S0+dS1) and snapshots created on the source by TM, source-snapshot1(D1),...., source-snapshot10(D1). This destination snapshot prevents all of them from being changed.
On day 2, I upgrade Mac to high Sierra and S2=S1+dS2 where dS2 represents the new system files of High Sierra. Just like in the time machine case as pointed out by weaselboy, CCC does not know that the Mac OS has changed, it only know some files have been changed and dutifully records the changes like before. So the CCC destination snapshot on day1 allow me to restore the Mac to the state on day1, as well as to any state represented by the snapshots on the source: source-snapshot1(D1),...., source-snapshot10(D1). And likewise , the CCC destination snapshot(D0) allows me to restore to the state S0 on day 0.
On day 3, I upgrade the Mac to Mojave. Following the same reasoning, from the CCC destination snapshots on day 0, day 1 and day 2, I should be able to restore the Mac to Yosemite or HIGH Sierra, just like time machine would.
With these approach, all the past OS upgrades could be restored from the CCC backups. Am I correct or I am totally wrong?