Faire un nettoyage des snapshots de macOS

J’ai abordé hier la notion de snapshot avec APFS, une fonction super puissante et très pratique pour créer un instantané d’un volume. Suite à cet article, j’ai reçu une question sur le stockage de macOS qui prend parfois bien plus de place qu’il ne devrait. Par exemple une partition macOS qui occupe 300 Go d’espace alors que l’utilisateur n’exploite réellement que quelques Go du disque. Et cela m’a fait penser à un problème que j’ai rencontré récemment avec ces fameux snapshots.

En effet, en voulant faire du nettoyage sur mon Mac, j’ai dégagé une grosse partie des machines virtuelles que j’utilisais avec VMware Fusion. Mais une fois la corbeille vidée, surprise : impossible de récupérer l’espace-disque pris par ces machines ! Soit plusieurs centaines de Go…

Il faut savoir que normalement, les snapshots sont automatiquement nettoyés lorsque de l’espace-disque est nécessaire. Ils sont donc à ce titre considérés comme de l’espace-disque disponible et comptés comme tel. En clair : même si un Snapshots prend 200 Go sur votre disque, macOS n’affichera pas cette espace comme occupé.

Sauf que dans mon cas, ça n’est pas exactement ce qui s’est produit. Et cela était à priori dû à une fonction de macOS : les instantanés locaux de Time Machine. Cette fonction suuuuuuper utile permet de sauvegarder régulièrement les données de votre poste même quand votre disque Time Machine n’est pas disponible. Dans ce cas, macOS passe par les sauvegardes locales pour vous permettre quand même de récupérer vos données en cas de pépin (genre un fichier que vous avez effacé par erreur).

Revenons sur notre problème. Dans mon cas, je ne sais pas si c’était dû à un bug ou pas, mais la seule solution a été pour moi de supprimer les snapshots locaux. Pour cela, il a fallu à nouveau passer par le Terminal et la commande tmutil.

tmutil listlocalsnapshotdates /

Affiche les dates des snapshots disponibles pour votre Mac :

Time machine snapshots

On aurait pu utiliser aussi

tmutil listlocalsnapshots /

Mais la première commande est préférable car elle liste uniquement les dates des snapshots, et comme vous le verrez ensuite, ça sera plus pertinent.

À priori, peu de chances que votre disque soit gavé jusqu’à la moelle de snapshots. Mais si vous devez en effacer, vous disposez de deux options.

Supprimer une certaine quantité de données

Pour cela, tapez :

tmutil thinlocalsnapshots / TailleEnOctets UrgenceDe1à4

Vous pouvez spécifier dans la commande :

– La taille en octets à récupérer. Par exemple, si vous voulez récupérer 10 Go, tapez 10000000000 (Oui je sais qu’un Go ça fait pas 10 000 000 000 octets précisément MERCI, c’est pour simplifier enfin) ;

– Eventuellement, le degré d’urgence, qui sera un chiffre compris entre 1 et 4.. Ce qui est rigolo, c’est qu’Apple ne précise pas ce que ça fait exactement. Mais on peut penser que ça permet, euh, de faire agir la commande plus vite. Ou pas. Bref.

Supprimer des dates précises de snapshots

C’est dans ce cas précis qu’il vaut mieux avoir les dates uniquement affichées avec listlocalsnapshotdates.

tmutil deletelocalsnapshots date

Où vous remplacerez date par une date de snapshot à supprimer.

Evidemment, vous voyez le souci : il est impossible de facilement savoir quelle est la taille utilisée réellement par un snapshot APFS et donc de viser un snapshot précis. C’est fort dommage. Mais c’est comme ça.

Dans mon cas, donc, je n’ai vu regagner de la place sur mon disque qu’après avoir supprimé tous les snapshots locaux.

Un peu de philosophie sur la façon dont nous appréhendons le stockage

J’aurais quand même tendance à devoir de nos jours expliquer que le stockage s’use si on s’en sert. Mais pour le coup, les snapshots sont une BONNE façon d’occuper de l’espace de façon intelligente. Dans l’absolu, sauf horreur ou que vous ne trouvez vraiment pas votre compte de stockage, ne vous forcez pas à supprimer les snapshots locaux. Il vaut mieux les avoir sous la main et en disposer en cas de pépin plutôt que de vouloir absolument chercher à récupérer le moindre octet quand cela n’est pas nécessaire.

Bref : sauf cas extrême, laissez votre Mac gérer votre espace de stockage pour vous.

4 comments

  1. Stéphane dit :

    Espace est féminin en typographie seulement. Celui laissé sur le disque devrait être masculin.

    Sympa les astuces/infos du jour. Malheureusement mon iMac de 2009 n’en profite pas trop ;). Un jour peut-être…

  2. Dandu dit :

    Cette phrase est bizarre : (Oui je sais qu’un Go ça fait pas 10 000 000 000 octets précisément MERCI, c’est pour simplifier enfin)

    Parce que justement, ça fait bien ça dans le SI (Système International). Et d’ailleurs, les OS Apple comptent bien comme ça depuis un moment (à raison).

    Les distribs Linux passent généralement en Gio (en base binaire). Y a que Windows qui continue à afficher du Go et compter en Gio.

  3. Hassan Cehef dit :

    Mais si les sauvegardes TimeMachine locales sont là pour sauvegarder les differences quand le disque TimeMachine n’est pas connecté, n’est-il pas recommandable d’abord de conseiller de le rebrancher ce disque TimeMachine, et alors de vérifier combien cela va libérer de place sur le disque local (ou non, ce qui serait ballot de la part de macOS…)? Moi j’dis ça, j’dis rien (…que quelques possibles gigas de films regardés dans sa chambre d’hotel, puis effacés aussitôt après… mais justement gardés dans ces sauvegardes locales?)

  4. Nicolevitch dit :

    À noter un comportement étrange qui m’a rendu fou ce week-end alors que je devais sauvegarder mon iPhone pour une réinstall (comportement peut-être propre à ITunes, je n’ai pas creusé) : Alors que j’avais semble-t-il bien assez de place, iTunes bloquait la sauvegarde par manque d’espace disque, sans autre forme de procès. L’espace en question était occupé par des snapshots mais iTunes ne semblait pas avoir eu le mémo qui l’autorisait à les effacer en cas de besoin :-)
    J’ai donc passé quelques heures à découvrir les snapshots, ce que c’est et comment les virer via ces lignes de commande.
    Ce très bon post de blog m’y aurait bien aidé, à quelques jours près !