macOS Catalina: system and data volumes seen as one makes things trickier than before

Catalina introduces a separation between a write protected system volume, seen as the main ‘Macintosh HD’ volume mounted on / and a read/write data volume called ‘Macintosh HD – Data’ which is mounted on /System/Volumes/Data. Both volumes are seen by the user as a single drive with familiar folders: /Applications, /Users, /Library etc. However these folders are now firmlinks to different drive locations. Firmlinks are a new APFS feature, similar to symbolic links, creating portals or wormholes to different locations on the drive, even across different volumes and having its own consistent path.

Catalina system and data volumes mixing principle in a highly simplified diagram

As an example, we can see that /Users/Guest and /System/Volumes/Data/Users/Guest will point to the same folder, just like a symlink would do, but firmlinks are seen by users (and by Purple Tree app) as regular folders and therefore are traversed when scanning a system drive. As a result the tree traversal from / will traverse Users folder twice, displaying a huge false duplicate 😱. Same for /Application which is mixing system and user installed apps!

An update fixing this issue will come soon. Meanwhile, in order to prevent this in Purple Tree 3.3.3 and earlier, you should manually exclude /System/Volumes/Data in Preferences. To do so, just browse to /System/Volumes and select what appears to be ‘Macintosh HD’ then check the added path to be correct. Please note that this is necessary only if you scan the whole system drive. In case you just want to scan your home directory or a different drive, this exclusion is not required 🙂

See also: Apple support page on this topic and an excellent post on eclecticlight.co