Is it possible to exclude different volumes from Time Machine between two macOS systems that run on the same machine?
I'm currently switching between two different macOS installations on a single MacBook Air. One is 10.14 installed to my MacBook's internal drive and is my main system, and the other is 10.15 beta installed on an external drive for testing software.
I have both systems set to back themselves up to two different Time Machine network disks. However, I'd like to exclude the other system volume from each of those backups, i.e. the 10.14 backup does not include the 10.15 volume, and vise versa.
However Time Machine seems to save which volumes get excluded to the volume itself, so if I exclude one of these system volumes from a Time Machine backup, it will be excluded from all Time Machine backups! I haven't found a way to do what I want.
Currently I'm dealing with this by not mounting the other system volume in whichever system I'm running. But every now and then I need to copy files between them, and if I mount both at the same time and forget to disable automatic backups, I run the risk of Time Machine suddenly trying to back up the wrong volume, which would be something of a disaster. (It'd take hours to complete and totally fill up my Time Machine drive, among other problems.)
Is there anything I can do to get Time Machine to behave how I want?
I think it is possible for your situation.
(but before the reading: all writeup here is valid only for Mojave and Catalina, I cannot tell about other versions, it may or not be the same for other versions)
Historically time machine backups evolved into various kind of "marks" to determine which item is included or excluded. For the recent version I think most of them are valid. (I am referring to hidden files, extended file attributes, and similar identification "things" that time machine uses for it to know details about files to backups and for backup items)
But your case is not so complex (which would require a complex criteria to use file attributes or complex things)
You want to exclude a whole disk
Mojave and Catalina, when excluding an entire volume from Time Machine Backups, configure this setting on a local system config file, without touching files or inserting attributes on the selected volume to be excluded.
The volume exclusion list is saved under /Library directory of the operating system.
Specifically on this file:
/Library/Preferences/com.apple.TimeMachine.plist
This is the system wide configuration file to hold settings for the Time Machine application. Which means, Time Machine is not dependent of any user settings. It is a unique System setting. (There is no news here, it is just an emphasis on this information)
When you go to System Preferences -> Time Machine, and add a entire volume to be excluded, this information to exclude it is saved on that .plist file, inside a subcategory called "ExcludedVolumeUUIDs". That is very interesting because it saves the reference using the UUID of the volume, this way if you, for example, rename the volume, there will be no problem, because the UUID will continue the same, so this is a REAL volume exclusion, and not a weak reference to its name nor any folder reference [or mounted folder reference]... Another good thing about this, is that if you have any kind of external or exchangeable volume, it does not insert any Time Machine information on the disk/volume filesystem (Eg. You could have a volume used on 2 systems, which is backed-up when connected to your home iMac, but not when your are using it connected on your MacBook laptop at office.
The exclusion via UUID in is 'by system' and not 'by touching the volume'
So, considering the facts that:
- the exclusion for Volumes is a system setting, and
- it does not modify anything on the target volume
You can have different setting between your 2 operating system. Because each of them will have its personal Time Machine volume exclusion settings [configured inside itself on that individual system file]
You can look at that file, and I recommend you to look, to be sure it is correctly excluding by having the item under UUID volumes to be excluced (otherwise if not there, the exclusion would be using another method, like I mentioned before, such as file attributes. And we don't want other methods, we need UUID volume exclusion)
- To read that entire file, use this command:
defaults read /Library/Preferences/com.apple.TimeMachine.plist
here is mine:
{
AlwaysShowDeletedBackupsWarning = 0;
AutoBackup = 0;
BackupAlias = {length = 334, bytes = 0x00000000 014e0002 00010e45 58544552 ... 45524100 ffff0000 };
Destinations = (
{
BackupAlias = {length = 334, bytes = 0x00000000 014e0002 00010e45 58544552 ... 45524100 ffff0000 };
BytesAvailable = 1705257172992;
BytesUsed = 1294991835136;
ConsistencyScanDate = "2019-07-24 13:07:32 +0000";
DestinationID = "C459ACD4-31AE-41D1-AC65-D88E5D317E43";
DestinationUUIDs = (
"90991750-4768-36CC-8DFD-13BCA5C776AE"
);
LastKnownEncryptionState = NotEncrypted;
RESULT = 0;
ReferenceLocalSnapshotDate = "2019-07-24 11:24:46 +0000";
RootVolumeUUID = "3DA126C7-122A-40C0-80B2-1225E390D130";
SnapshotDates = (
"2019-04-20 22:31:05 +0000",
"2019-05-19 03:42:05 +0000",
"2019-05-26 03:38:32 +0000",
"2019-06-04 09:24:07 +0000",
"2019-06-15 17:25:18 +0000",
"2019-06-30 08:33:36 +0000",
"2019-07-04 18:10:38 +0000",
"2019-07-12 16:11:50 +0000",
"2019-07-24 13:07:32 +0000"
);
UnencryptedBackupWarningDate = "2019-06-01 05:01:48 +0000";
}
);
ExcludedVolumeUUIDs = (
"92C778BF-621C-4017-866E-59031130661C",
"78014957-8494-45A0-92A4-F36A059EEDE7",
"6A3046E5-2EFC-48DE-909E-D6FF2744D140",
"7B808A26-9743-4D3E-9605-DEA648D2776A",
"CB723B05-D8B5-40D8-BBAD-0542A5AC1220",
"0225C60C-86F7-44EE-A578-CCF60963BDCA",
"52BD54AB-8E4F-41C0-AF85-2831913156EC",
"909DA662-20A1-408E-BBA3-0CD8E9B1B3DB",
"4E319128-35AA-4D50-A9E4-A8A5DA4B47BC",
"7B4ED02C-7E46-4457-B1FF-5B884483CD7B"
);
HostUUIDs = (
"BD223C40-7AA3-592D-85CF-DE69305768BC"
);
IncludeByPath = (
"/Applications",
"/Library",
"/System",
"/bin",
"/private",
"/sbin",
"/usr"
);
LastConfigurationTraceDate = "2019-07-12 16:12:00 +0000";
LastDestinationID = "C459ACD4-31AE-41D1-AC65-D88E5D317E43";
LocalizedDiskImageVolumeName = "Backups do Time Machine";
PreferencesVersion = 4;
SkipPaths = (
"/Volumes/Scratch"
);
SkipSystemFiles = 0;
}
- You can also be more specific to reading it by selecting the key ExcludedVolumeUUIDs:
defaults read /Library/Preferences/com.apple.TimeMachine.plist ExcludedVolumeUUIDs
(
"92C778BF-621C-4017-866E-59031130661C",
"78014957-8494-45A0-92A4-F36A059EEDE7",
"6A3046E5-2EFC-48DE-909E-D6FF2744D140",
"7B808A26-9743-4D3E-9605-DEA648D2776A",
"CB723B05-D8B5-40D8-BBAD-0542A5AC1220",
"0225C60C-86F7-44EE-A578-CCF60963BDCA",
"52BD54AB-8E4F-41C0-AF85-2831913156EC",
"909DA662-20A1-408E-BBA3-0CD8E9B1B3DB",
"4E319128-35AA-4D50-A9E4-A8A5DA4B47BC",
"7B4ED02C-7E46-4457-B1FF-5B884483CD7B"
)
You can see I have several excluded volumes, those are volumes on my secondary 2TB disk that I don't want to backup.
Configuring your 2 systems for exlusion
- Boot Mojave:
Just open System Preferences -> Time Machine -> Options
and select a disk volume from the finder open dialog:
save, and execute the command line to verify the exclusion by UUID:
defaults read /Library/Preferences/com.apple.TimeMachine.plist
You should see the volume UUID included under the key ExcludedVolumeUUIDs
Don't backup yet. Let's configure both and verify.
- Boot Catalina:
And do the same.
Verify the the exclusion is inserted for UUID with the command line.
Also on the Time Machine Preferences item, of each MacOS, you will see the excluded volume of the other, and it will have an icon which is a hard-disk icon. The same icon of that Finder open dialog.
- Boot Mojave again:
And confirm that the exclusion configured on item1 remains the same. (It should be the same as configured on item 1, untouched by the configuration done on item2)
This is it:
Each operating system now have the respective other-disk UUID item under that configuration key, and the Time Machine dialog should also show the other-disk of each one.