{
    "items": [
        {
            "type": [
                "h-entry"
            ],
            "properties": {
                "name": [
                    "Recover missing disk space on OSX"
                ],
                "url": [
                    "https://jeremycherfas.net/blog/recover-missing-disk-space-on-osx"
                ],
                "published": [
                    "2026-06-06T13:16:00+02:00"
                ],
                "content": [
                    {
                        "html": "<p>I had a lot of trouble on my Mac with Time Machine telling me the disk was full and yet I could not find huge wins just by inspection and deleting things that looked too big. I drafted ChatGPT in to help diagnose the problem and it had me jump through all sorts of hoops, which did eventually recover the space I needed.</p>\n\n<p>Rather than repeating all those steps as an <em>aide-memoire</em>, I asked ChatGPT to go through the entire exchange and prioritise the various steps. This (lightly edited) is what I received.</p>\n<p><strong>Retrospective: Better Process for Identifying the Missing Disk Space</strong></p>\n<p>Yes. In hindsight, once we saw the <strong>large <code>df</code> vs <code>du</code></strong> discrepancy, rebooting should have moved much higher in the priority list.</p>\n<p>A better priority order would have been:</p>\n<ol>\n<li>\n<p><strong>Confirm real free space with <code>df</code></strong></p>\n<pre><code>df -h /System/Volumes/Data</code></pre>\n</li>\n<li>\n<p><strong>Compare with visible file usage</strong></p>\n<pre><code>sudo du -xhd 1 /System/Volumes/Data 2&gt;/dev/null | sort -h</code></pre>\n</li>\n<li>\n<p><strong>If <code>df</code> says \\~203 GB used but <code>du</code> only finds \\~119 GB, stop hunting normal folders</strong></p>\n<p>That discrepancy was the crucial clue. At that point, deleting<br>\ncaches, MobileSync backups, and Homebrew files was secondary.</p>\n</li>\n<li>\n<p><strong>Check for snapshots and open deleted files</strong></p>\n<pre><code class=\"language-bash\">sudo diskutil apfs listSnapshots /System/Volumes/Data\nsudo lsof +L1</code></pre>\n</li>\n<li>\n<p><strong>If snapshots are mounted/protected/busy, reboot early</strong></p>\n<p>The moment we saw: <code>/Volumes/com.apple.TimeMachine.localsnapshots/... </code> and later <code>Snapshot ... Purgeable: Yes</code> a reboot should have been recommended as the quickest practical next step.</p>\n</li>\n</ol>\n<p>So yes: once the evidence showed <strong>\\~80--100 GB missing from normal filesystem accounting</strong>, the best path was:</p>\n<pre><code>df/du discrepancy \u2192 check snapshots/open files \u2192 reboot \u2192 recheck df</code></pre>\n<p>rather than continuing to inspect ordinary folders.</p>\n<p>The cache/MobileSync/Homebrew cleanup advice was still safe and useful, but it was not the main solution. The decisive clue was the <code>df</code>/<code>du</code> gap, and the decisive fix was rebooting to release mounted Time Machine local snapshots.</p>\n<div class=\"notices blue\">\n<p>I'm sure this will help future me. May it also help present you.</p>\n</div>",
                        "value": "I had a lot of trouble on my Mac with Time Machine telling me the disk was full and yet I could not find huge wins just by inspection and deleting things that looked too big. I drafted ChatGPT in to help diagnose the problem and it had me jump through all sorts of hoops, which did eventually recover the space I needed.\nRather than repeating all those steps as an aide-memoire, I asked ChatGPT to go through the entire exchange and prioritise the various steps. This (lightly edited) is what I received.\nRetrospective: Better Process for Identifying the Missing Disk Space\nYes. In hindsight, once we saw the large df vs du discrepancy, rebooting should have moved much higher in the priority list.\nA better priority order would have been:\nConfirm real free space with df df -h /System/Volumes/Data\nCompare with visible file usage sudo du -xhd 1 /System/Volumes/Data 2>/dev/null | sort -h\nIf df says \\~203 GB used but du only finds \\~119 GB, stop hunting normal folders\nThat discrepancy was the crucial clue. At that point, deleting\ncaches, MobileSync backups, and Homebrew files was secondary.\nCheck for snapshots and open deleted files sudo diskutil apfs listSnapshots /System/Volumes/Data sudo lsof +L1\nIf snapshots are mounted/protected/busy, reboot early\nThe moment we saw: /Volumes/com.apple.TimeMachine.localsnapshots/... and later Snapshot ... Purgeable: Yes a reboot should have been recommended as the quickest practical next step.\nSo yes: once the evidence showed \\~80--100 GB missing from normal filesystem accounting, the best path was: df/du discrepancy \u2192 check snapshots/open files \u2192 reboot \u2192 recheck df\nrather than continuing to inspect ordinary folders.\nThe cache/MobileSync/Homebrew cleanup advice was still safe and useful, but it was not the main solution. The decisive clue was the df/du gap, and the decisive fix was rebooting to release mounted Time Machine local snapshots.\nI'm sure this will help future me. May it also help present you.",
                        "lang": "en"
                    }
                ],
                "author": [
                    {
                        "type": [
                            "h-card"
                        ],
                        "properties": {
                            "name": [
                                "Jeremy Cherfas"
                            ],
                            "url": [
                                "https://jeremycherfas.net"
                            ],
                            "photo": [
                                "https://www.jeremycherfas.net/user/themes/newtheme/images/zoot.jpg"
                            ],
                            "email": [
                                "mailto:jcherfas@fastmail.fm"
                            ]
                        },
                        "lang": "en",
                        "value": "https://jeremycherfas.net"
                    }
                ]
            },
            "lang": "en"
        }
    ],
    "rels": {
        "icon": [
            "https://jeremycherfas.net/user/themes/my-new-theme/images/logo.png"
        ],
        "canonical": [
            "https://jeremycherfas.net/"
        ],
        "webmention": [
            "https://webmention.herokuapp.com/api/webmention"
        ],
        "alternate": [
            "https://jeremycherfas.net/blog.atom",
            "https://jeremycherfas.net/blog.rss",
            "https://jeremycherfas.net/blog.json"
        ],
        "me": [
            "https://indieweb.social/@etp",
            "https://github.com/jeremycherfas",
            "https://stream.jeremycherfas.net",
            "https://micro.blog/jeremycherfas",
            "https://jeremycherfas.net/ig.html/",
            "https://pnut.io/@jeremycherfas"
        ],
        "preconnect": [
            "https://fonts.bunny.net"
        ],
        "stylesheet": [
            "https://fonts.bunny.net/css?family=noto-serif:400",
            "https://jeremycherfas.net/user/plugins/unitegallery/vendor/unitegallery/css/unite-gallery.css",
            "https://jeremycherfas.net/user/plugins/markdown-notices/assets/notices.css",
            "https://jeremycherfas.net/user/plugins/form/assets/form-styles.css",
            "https://jeremycherfas.net/user/plugins/pagination/css/pagination.css",
            "https://jeremycherfas.net/user/plugins/login/css/login.css",
            "https://jeremycherfas.net/user/themes/my-new-theme/css/style.css?v=1.1.3",
            "https://jeremycherfas.net/user/themes/my-new-theme/js/chartist/dist/chartist.min.css?v=1.0.1",
            "https://jeremycherfas.net/user/themes/my-new-theme/css/line-awesome.min.css"
        ],
        "noopener": [
            "https://photos.jeremycherfas.net/flowers/bouquet/"
        ]
    },
    "rel-urls": {
        "https://jeremycherfas.net/user/themes/my-new-theme/images/logo.png": {
            "type": "image/png",
            "rels": [
                "icon"
            ]
        },
        "https://jeremycherfas.net/": {
            "rels": [
                "canonical"
            ]
        },
        "https://webmention.herokuapp.com/api/webmention": {
            "rels": [
                "webmention"
            ]
        },
        "https://jeremycherfas.net/blog.atom": {
            "title": "Feed (Atom)",
            "type": "application/atom+xml",
            "rels": [
                "alternate"
            ]
        },
        "https://jeremycherfas.net/blog.rss": {
            "title": "Feed (RSS)",
            "type": "application/rss+xml",
            "rels": [
                "alternate"
            ]
        },
        "https://jeremycherfas.net/blog.json": {
            "title": "Feed (json)",
            "type": "application/json",
            "rels": [
                "alternate"
            ]
        },
        "https://indieweb.social/@etp": {
            "title": "Mastodon",
            "rels": [
                "me"
            ]
        },
        "https://fonts.bunny.net": {
            "rels": [
                "preconnect"
            ]
        },
        "https://fonts.bunny.net/css?family=noto-serif:400": {
            "rels": [
                "stylesheet"
            ]
        },
        "https://jeremycherfas.net/user/plugins/unitegallery/vendor/unitegallery/css/unite-gallery.css": {
            "type": "text/css",
            "rels": [
                "stylesheet"
            ]
        },
        "https://jeremycherfas.net/user/plugins/markdown-notices/assets/notices.css": {
            "type": "text/css",
            "rels": [
                "stylesheet"
            ]
        },
        "https://jeremycherfas.net/user/plugins/form/assets/form-styles.css": {
            "type": "text/css",
            "rels": [
                "stylesheet"
            ]
        },
        "https://jeremycherfas.net/user/plugins/pagination/css/pagination.css": {
            "type": "text/css",
            "rels": [
                "stylesheet"
            ]
        },
        "https://jeremycherfas.net/user/plugins/login/css/login.css": {
            "type": "text/css",
            "rels": [
                "stylesheet"
            ]
        },
        "https://jeremycherfas.net/user/themes/my-new-theme/css/style.css?v=1.1.3": {
            "type": "text/css",
            "rels": [
                "stylesheet"
            ]
        },
        "https://jeremycherfas.net/user/themes/my-new-theme/js/chartist/dist/chartist.min.css?v=1.0.1": {
            "type": "text/css",
            "rels": [
                "stylesheet"
            ]
        },
        "https://jeremycherfas.net/user/themes/my-new-theme/css/line-awesome.min.css": {
            "type": "text/css",
            "rels": [
                "stylesheet"
            ]
        },
        "https://photos.jeremycherfas.net/flowers/bouquet/": {
            "text": "New Photos",
            "rels": [
                "noopener"
            ]
        },
        "https://github.com/jeremycherfas": {
            "title": "GitHub",
            "rels": [
                "me"
            ]
        },
        "https://stream.jeremycherfas.net": {
            "title": "Known",
            "rels": [
                "me"
            ]
        },
        "https://micro.blog/jeremycherfas": {
            "title": "Micro Blog",
            "rels": [
                "me"
            ]
        },
        "https://jeremycherfas.net/ig.html/": {
            "title": "Instagram",
            "rels": [
                "me"
            ]
        },
        "https://pnut.io/@jeremycherfas": {
            "title": "pnut",
            "rels": [
                "me"
            ]
        }
    },
    "debug": {
        "package": "https://packagist.org/packages/mf2/mf2",
        "source": "https://github.com/indieweb/php-mf2",
        "version": "v0.5.0",
        "note": [
            "This output was generated from the php-mf2 library available at https://github.com/indieweb/php-mf2",
            "Please file any issues with the parser at https://github.com/indieweb/php-mf2/issues",
            "Using the Masterminds HTML5 parser"
        ]
    }
}