Prune HFS+ TM Backups in macOS Sequoia+

Last modified: Aug 28, 2025 10:12 AM
0 96 Last modified Aug 28, 2025 10:12 AM

General

This user tip is specific to the following situation:

  • Your Mac is running macOS Sequoia (actually, macOS Sonoma) or newer.
  • You make Time Machine.backups to an external HDD that is formatted in HFS+.
  • Your external drive is nearly full so any future backups are glacially slow.
  • You have many years of backups and either no longer need or care about the oldest ones, but you still need to use this HFS+ formatted drive for Time Machine.
  • You want to delete individual backups or sets of backups, by either months or years.


Why I Wrote This User Tip

If you ever tried to delete TM backups from a HFS+ formatted HDD in macOS Sequoia, you will find yourself thwarted on several fronts.

  • The TM Interface no longer provides you with the option to select and delete individual TM backup sets.
  • Although you can select and delete individual TM backup sets, via Finder, doing so will, most likely, corrupt the entire TM set for that host computer. Simply, put, the backup is "broken," and you will need to start a new "fresh" backup set. This method is NOT recommended!


The "good" news is that there is still a way to purge TM backups, and that is with the tmutil command in the Terminal.


(Note: For this user tip, I have a fictional external HDD, located at: /Volumes/SG1. As such, you will need to use the actual location & name of the one that you are using.)


⚠️ A few cautions:

  • Always double-check the paths before running delete — there’s no undo.
  • Don’t interrupt tmutil mid-process, especially when deleting large backups.
  • If you’re scripting bulk deletes, test with one or two first.
  • Yes, it’s best practice to pause or at least ensure Time Machine isn’t actively backing up when you delete older sets, whether you’re using Finder or tmutil.
  • Use quotes around any path with spaces (or just always quote to be safe).
  • Before you run it, a few sanity checks that often matter on external HFS+ TM sets:
    • Pause TM: sudo tmutil disable (re-enable after cleanup with sudo tmutil enable).
    • Enable ownership on the volume (deletions can fail if “Ignore ownership” is on):
sudo diskutil enableOwnership "/Volumes/SG1"

Prune Individual TM Backups

tmutil is the right tool if you want to clean up multiple backups without the repetitive clicking in Finder. Since your Time Machine drive is HFS+ (not APFS snapshots), you’ll be dealing with “legacy” style backups stored in dated folders under Backups.backupdb. The nice part is that tmutil understands these structures and deletes them cleanly without breaking hard links.


Here’s how to use it step by step:

  • Open Terminal (in /Applications/Utilities).
  • First, list your current backups on the destination drive with: tmutil listbackups -d /Volumes/SG1


You’ll see a list of full paths like:

/Volumes/SG1/Backups.backupdb/MacBookPro/2024-08-15-120000

/Volumes/SG1/Backups.backupdb/MacBookPro/2024-08-22-120000

/Volumes/SG1/Backups.backupdb/MacBookPro/2024-09-01-120000


To delete a specific backup, run:

sudo tmutil delete -d "/Volumes/SG1" -t 2024-08-15-120000


If you need to clear several at once, you can chain timestamps in one line:

sudo tmutil delete -d "/Volumes/SG1" -t 2024-08-15-120000 -t 2024-08-22-120000 -t 2021-09-01-120000


Or prune a range by grepping the list:

tmutil listbackups -d "/Volumes/SG1" | grep '^/Volumes/SG1' | grep 2021-08 | \
while read -r p; do sudo tmutil delete "$p"; done


Prune All TM Backups for a Specific Month

You can prune all TM backups for a particular month with this command script. Just copy and paste into the Terminal app, and make the appropriate edits BEFORE running the command. Again, note the cautions I provided you earlier in the "A few cautions" section above.


NOTE: In this example, we want to delete all TM backups from September 2021.


As a safety check, do a dry run first:

tmutil listbackups -d "/Volumes/SG1" | grep 2021-09-


NOTE: Verify that the resultant listing matches only the backups you want to delete.

tmutil listbackups -d "/Volumes/SG1" | \
grep -E '/2021-02-[0-9]{2}-[0-9]{6}$' | \
awk -F/ '{print $NF}' | \
while IFS= read -r ts; do
  [ -n "$ts" ] && sudo tmutil delete -d "/Volumes/SG1" -t "$ts"
Done


The only part you need to tweak is the grep -E pattern that filters by timestamp. Right now it’s set to match September 2021 with 2021-09.


For a different month, just swap the -09- with the month number you want:

• January 2021:

grep -E '/2021-01-[0-9]{2}-[0-9]{6}$'

• February 2021:

grep -E '/2021-02-[0-9]{2}-[0-9]{6}$'

• December 2021:

grep -E '/2021-12-[0-9]{2}-[0-9]{6}$'


To not be prompted to enter the Administrator password for each deletion, use this command script instead:


tmutil listbackups -d "/Volumes/SG1" | \
grep -E '/2021-09-[0-9]{2}-[0-9]{6}$' | \
awk -F/ '{print $NF}' | \
sudo bash -c 'while IFS= read -r ts; do
  [ -n "$ts" ] && tmutil delete -d "/Volumes/SG1" -t "$ts"
done'


Prune All TM Backups for a Specific Year

Similar on how we used a command to do deletes by month, we can do so for backups by year.


NOTE: In this example, we want to delete all TM backups from the year 2021.


As a safety check, do a dry run first:

tmutil listbackups -d "/Volumes/SG1" | grep 2021


NOTE: Verify that the resultant listing matches only the backups you want to delete.


sudo bash -c '
tmutil listbackups -d "/Volumes/SG1" | grep 2021 |
while IFS= read -r backup; do
  echo "Deleting: $backup"
  tmutil delete -p "$backup"
done
'


Alternately, you can use this command script instead:

sudo bash -c '
while IFS= read -r backup; do
  echo "Deleting: $backup"
  tmutil delete -p "$backup"
done < <(tmutil listbackups -d "/Volumes/SG1" | grep 2021)
'


Welcome to Apple Support Community
A forum where Apple customers help each other with their products. Get started with your Apple Account.