Gérer Time Machine depuis le terminal : Partie 4
Nous voici dans la dernière partie de notre série sur Time Machine. Il s'agira de reprendre l'excellent article de Frank écrit quelques années en arrière et de rentrer un peu plus dans les détails et de l'étendre à tous les supports réseau.
Reprenons la plupart des fonctionnalités vues précédemment, appliqué à une sauvegarde sur un disque réseau.
1/ Destination des sauvegardes
Pour commencer, regardons à quoi ressemble la destination d'un Time Machine configuré sur un disque réseau.
tmutil destinationinfo
Voici le résultat ici un Mac nommé intranet, disposant d'un dossier partagé nommé Backup pour la sauvegarde de plusieurs Mac
====================================================
Name : Backup
Kind : Network
URL : afp://sky@intranet._afpovertcp._tcp.local./Backup
Mount Point : /Volumes/com.apple.TimeMachine.Backup-D7042BA3-5C69-49E7-89F2-0CAC8D59E4CC
ID : 3BAE46A8-89F4-4A24-8E50-C24868C441B9
2/ Lister les sauvegardes
Une nouvelle fois, il suffit de reprendre la commande vue précédemment
tmutil listbackups
Le résultat va beaucoup ressembler à ce que l'on avait avec un disque connecté localement.
/Volumes/Copies de sauvegarde Time Machine/Backups.backupdb/Manager/2021-04-15-191429
/Volumes/Copies de sauvegarde Time Machine/Backups.backupdb/Manager/2021-04-22-000144
/Volumes/Copies de sauvegarde Time Machine/Backups.backupdb/Manager/2021-04-29-000135
/Volumes/Copies de sauvegarde Time Machine/Backups.backupdb/Manager/2021-05-01-000144
...
La seule différence vient du nom du disque qui est différent.
Mais d'où vient ce disque nommé "Copies de sauvegarde Time Machine" ? Le plus simple est de regarder directement dans le dossier Volumes dans lequel il est sensé se trouver.
ls -l /Volumes/
Voici le résultat sur mon Mac, il devrait évidemment différer sur votre machine.
total 0
drwxr-xr-x 4 root wheel 272 Apr 15 10:06 Copies de sauvegarde Time Machine
lrwxr-xr-x 1 root wheel 1 Apr 9 17:58 MacPro -> /
drwx------ 1 root wheel 330 Apr 15 10:02 com.apple.TimeMachine.Backup-0C8007F7-ACCE-415E-BE94-AEE0F1248A75
drwx--x--x+ 3 root wheel 96 May 30 04:13 com.apple.TimeMachine.localsnapshots
On y voit bien le disque principal du Mac, nommé MacPro qui pointe vers /. On peut aussi y voir le volumes gérant les instantanés locaux.
Mais on remarque surtout le dossier Copies de sauvegarde Time Machine, et il n'est pas seul. Il y a un autre volume dont le nom rappelle l'utilisation de Time Machine.
com.apple.TimeMachine.Backup-0C8007F7-ACCE-415E-BE94-AEE0F1248A75
Ce nom ne nous est pas étranger, puisqu'il s'agit de la valeur du Mount Point vue dans les informations de destination. Continuons nos investigations, qu'est ce que l'on trouve dans ce volume ?
ls -l /Volumes/com.apple.TimeMachine.Backup-0C8007F7-ACCE-415E-BE94-AEE0F1248A75/
La réponse n'est, franchement, pas celle attendue...
ls: : Permission denied
Comme tmutil nécessitait les droits administrateurs, il en va de même pour l'accès au dossier de gestion Time Machine en réseau. Recommençons avec l'accès root
sudo ls -l /Volumes/com.apple.TimeMachine.Backup-0C8007F7-ACCE-415E-BE94-AEE0F1248A75/
Une fois le mot de passe inséré, voici le résultat
total 16
-rw-r--r--@ 1 root wheel 6148 Jul 13 2018 .DS_Store
d-wx-wx-wt 1 root wheel 264 Apr 15 10:35 .Trashes
drwx------ 1 root wheel 14474 May 23 09:20 .fseventsd
drwx------ 1 root wheel 296 Apr 23 19:17 MacBookAir.sparsebundle
drwx------ 1 root wheel 296 May 25 15:47 MacPro.sparsebundle
En dehors des éléments invisibles, dont les noms commencent par un point, on peut y voir 2 dossiers disposant d'une extension sparsebundle.
Pourquoi tout ce bazar ?
Lorsque vous disposez de votre Time Machine sur un disque réseau, macOS va automatiquement créer une image disque un peu particulière appelée sparsebundle. Le système va ensuite utiliser cette image comme si c'était un disque local. Pour cela il va monter le volume réseau contenant tous les sparsebundles, puis va monter le sparsebundle dédié au Mac tant que nouveau volume s'appellant Copies de sauvegarde Time Machine.
En fin d'article nous verrons l'intérêt de ces sparsebundles et pourquoi ce choix de la part d'Apple.
3/ Suppression des copies de sauvegarde
La suppression des copies de sauvegarde sera identique à celle que l'on connait avec un disque attaché au Mac. Il faut simplement modifier le chemin, puisque le nom du disque est différent.
Attention, cependant, pour une raison que j'ignore, il arrive que le nom du volume contienne des caractères invisibles. Si le terminal pour renvoit sans arrêt que le chemin n'est pas valide, essayez d'y accéder avec la complétion automatique en insérant le tout début du nom du volume, puis en appuyant la touche tabulation de votre clavier.
Comme le nom du volume, en français contient beaucoup d'espaces, cela peut être une bonne idée de toute façon, d'utiliser cette fonctionnalité du terminal.
4/ Que faire lorsque les volumes ne sont pas montés ?
Malgré que Time Machine soit activé, il est possible que les volumes de sauvegarde ne soient pas montés, et donc pas disponibles pour vos actions. En effet, macOS va démonter les volumes automatiquement lorsqu'ils ne sont plus utilisés.
S'il est possible de monter des volumes via le terminal, il n'est pas recommandé de monter les volumes Time Machine de la sorte. Il est préférable de laisser le Mac faire avec sa méthode.
Pour monter les volumes automatiquement, il existe une petite technique toute simple qui consiste à demander à Time Machine de nous donner le nom du dernier backup
tmutil latestbackup
5/ Réduire et limiter la taille des volumes de sauvegarde
Par défaut, Time Machine va occuper toute la place disponible sur l'espace disque sur lequel on effectue ses sauvegardes.
Or, si l'on sauvegarde plusieurs Mac sur le même disque, nous pouvons rapidement avoir un soucis. En effet, le Mac le plus utilisé va phagocyter tout l'espace au détriment des autres Mac.
Pour cela il existe une solution pour limiter l'espace disque des volumes de sauvegarde. En effet, il est possible de faire en sorte que le dossier sparsebundle soit limité en taille.
Pour ma part, j'ai toujours choisi d'effectuer cette action sur le Mac servant de backup, mais elle doit pouvoir se faire sur le Mac client aussi.
Sur le serveur
sudo hdiutil resize -size 250g '/Volumes/Backup/MacPro.sparsebundle'
Sur le Mac client
sudo hdiutil resize -size 250g '/Volumes/com.apple.TimeMachine.Backup-0C8007F7-ACCE-415E-BE94-AEE0F1248A75/MacPro.sparsebundle'
Dans les deux cas, j'ai demandé à l'outil hdiutil de limiter la taille du volume à 250go. Encore une fois, il faut adapter à vos besoins mais surtout à l'espace disponible sur le disque servant de sauvegarde. Et évidemment, il est préférable de réaliser cette action sur l'ensemble des sparsebundles présent afin d'éviter qu'un seul prenne le pas sur les autres.
Pour réaliser cette action, il faut évidemment que le volume actuel ne dépasse pas le poids souhaité, auquel cas, il sera impossible de limiter la taille.
Vous pouvez voir la taille de votre sparsebundle, avec la commande du, dont nous avions parlé ici
sudo du -hs /Volumes/com.apple.TimeMachine.Backup-0C8007F7-ACCE-415E-BE94-AEE0F1248A75/MacPro.sparsebundle
La réponse devrait ressembler à cela
122G /Volumes/com.apple.TimeMachine.Backup-0C8007F7-ACCE-415E-BE94-AEE0F1248A75/MacPro.sparsebundle
Encore une fois, si c'est le cas, il existe une solution pour régler ce problème. Commencez par supprimer les sauvegardes dont nous ne voulez plus. Cette action, seule, ne réduira pas la taille du volume, vous pouvez le vérifier avec la commande du.
Pour cela, il faut demander à la commande hdiutil de compacter le volume. Sur le serveur
sudo hdiutil compact '/Volumes/Backup/MacPro.sparsebundle'
ou depuis le client
sudo hdiutil compact '/Volumes/com.apple.TimeMachine.Backup-0C8007F7-ACCE-415E-BE94-AEE0F1248A75/MacPro.sparsebundle'
La compression n'est une tâche rapide. Ne soyez pas pressé de voir le résultat arriver
Starting to compact…
Reclaiming free space…
....................................................................................................
Finishing compaction…
Reclaimed 14.5 GB out of 809.8 GB possible.
Ensuite, vous pouvez tester, à nouveau, la taille du sparsebundle pour voir si vous avez atteint la taille cible et enfin retenter d'appliquer une limitation.