I have automatic backup enabled and local TimeMachine snapshots take a large amount of disk space. This space is listed as purgeable in disk info, but cannot be actually used until the system decides to free it up. How can I force TimeMachine to delete those snapshots?
In Terminal, execute this small script:
for d in $(tmutil listlocalsnapshotdates | grep "-"); do sudo tmutil deletelocalsnapshots $d; done
The script lists all snaphosts and deletes all of them in a loop.
If you’re not running low on disk space (5 GB free) - just let this space be allocated as there is no downside to waiting to purge files until you need space.
That being said, if you decide to preemptively delete backups, I prefer to tell the system to free up space. If you know you have 50 GB amount to free, change the 5 below to 50 and then the system will iterate across all the local snapshots and prune them in the order defined by the system.
tmutil thinlocalsnapshots / $(echo "5 * 1000000000" | bc) 2
The only iteration I would do is to see how many APFS volumes you have and then perhaps thin any that are mounted.
Here’s a nice thread explaining the urgency - 2 works well for my needs, but the manual page explains there are 4 levels of urgency, so if you have specific needs, watch the IO and performance during thinning and experiment with smaller snapshots to thin.
I found by accident that opening the "Storage administration" windows (Cmd-U) in "System Information" released the local time machine snapshots making the space available.
I do not know if this is an officially supported way.