Les quatre endroits où une version précédente se trouve peut-être déjà

Avant d’installer quoi que ce soit, vérifiez les quatre endroits où votre Mac détient peut-être déjà le fichier que vous cherchez. Chacun couvre un cas étroit différent, et déterminer dans lequel vous êtes représente l’essentiel du travail.

Fichier > Revenir à, dans l’app. macOS intègre depuis des années la gestion des versions de documents, et une app qui l’adopte obtient un menu Fichier > Revenir à > Parcourir toutes les versions qui place les enregistrements passés de ce document sur une ligne du temps. TextEdit, Aperçu, Pages, Numbers et Keynote l’ont. La plupart des outils dans lesquels on travaille vraiment ne l’ont pas : aucune app Adobe, aucune app Office, rien de ce qu’un script a écrit.

Time Machine. Avec Sauvegarder automatiquement activé, macOS prend un instantané APFS local du disque de démarrage environ toutes les heures et le conserve 24 heures, plus un de la dernière sauvegarde réussie. Deux limites décident si cela aide : la granularité est d’une heure plutôt que d’un enregistrement, et tout ce qui a plus d’un jour n’existe que si le disque de sauvegarde est branché.

L’historique des versions de votre dossier cloud. Dropbox garde 30 jours de versions sur Basic et Plus et 180 sur Professional. Google Drive en garde une pendant 30 jours ou jusqu’à ce que 100 plus récentes existent, sauf si vous l’avez marquée Conserver indéfiniment. iCloud Drive fait exception : ses Suppressions récentes sur 30 jours récupèrent les fichiers supprimés, pas les versions écrasées. Tous trois couvrent exactement un dossier, celui qui est synchronisé.

L’enregistrement automatique de l’app elle-même. À regarder, rarement à compter dessus. C’est une annulation, et l’annulation meurt avec le processus.

Si l’un d’eux a votre fichier, arrêtez de lire. Ce qui suit concerne le cas qu’aucun ne couvre : un dossier non synchronisé, modifié par une app sans menu de versions, abîmé il y a plus d’une heure, ou abîmé sur plusieurs fichiers à la fois. Retrace est une app macOS native conçue pour ce cas, et tout ce qui suit figure dans la version publiée.

Activer l’historique, c’est un clic droit

Le menu contextuel du Finder avec le sous-menu Historique de Retrace ouvert, montrant Activer l’historique, Désactiver l’historique, Prendre un instantané, Restaurer la version précédente et Afficher l’historique
Activer l’historique tient en un menu contextuel. Il n’y a pas de dossier par défaut, car deviner quels dossiers comptent, c’est ainsi que ce genre d’app devient le problème.

Vous faites un clic droit sur un dossier dans le Finder, choisissez Historique et l’activez - ou vous l’ajoutez depuis la liste de dossiers de l’app. Il n’y a pas de dossier par défaut, et rien n’est surveillé tant que vous ne l’avez pas choisi. Un nouveau clic droit le désactive. Chaque dossier a son propre budget disque, et l’historique est conservé un an par défaut ; les deux se règlent dans Réglages -> Stockage, présentés plus bas, si vous les voulez différents.

Cinq éléments se trouvent sous Historique, en trois groupes : l’activer ou le désactiver, agir sur ce que vous avez cliqué - prendre un instantané de ce dossier, restaurer la version précédente de ce fichier - et ouvrir l’app. Ils sont toujours tous présents et toujours dans cet ordre, et ce qui n’est pas utilisable sur le moment est grisé plutôt que retiré, si bien que le geste est le même à chaque fois. C’est aussi ainsi que le menu dit ce qu’il regarde sans second indicateur : l’instantané n’est actif que sur un dossier qui attend qu’on le lui demande, et la restauration que sur un fichier.

Derrière le menu se trouve le seul vrai coût du maintien dans le bac à sable d’Apple. Une extension du Finder peut transmettre le chemin sur lequel vous avez fait un clic droit et rien d’autre, car un chemin venant d’un autre processus n’est pas une permission. Le premier lancement demande donc une fois votre dossier personnel et garde cet accès, après quoi le menu fonctionne simplement ; sans lui, la même action ouvre un sélecteur de dossier à la place.

Un dossier surveillé a aussi besoin d’une preuve qu’il est toujours surveillé. Un accès à portée de sécurité peut discrètement cesser de se résoudre - un volume disparaît, une mise à jour du système invalide un lot de signets - et rien dans macOS ne le signale ; le flux cesse simplement de livrer. Pour une app dont toute la promesse est « vous ne perdrez pas cela », c’est pire qu’un plantage, alors chaque dossier est re-résolu régulièrement avec une vraie lecture de test, et un dossier qui a cessé d’enregistrer le dit dans la liste au lieu de paraître en bon état.

Pourquoi garder une copie de tout ne coûte rien

Sur APFS, copyfile avec COPYFILE_CLONE crée un clone en copie sur écriture : un nouveau fichier qui partage les blocs de données de l’original. Il coûte environ zéro octet à la création et quelques microsecondes - un clone de 64 Mo se mesure à environ 0,1 ms et n’occupe aucun octet propre - et il reste un instantané correct quelle que soit la façon dont une app enregistre. Un éditeur qui réécrit le fichier sur place alloue de nouveaux blocs et laisse au clone les anciens ; un éditeur qui enregistre de façon atomique écrit un fichier entièrement nouveau auquel le clone n’a jamais été rattaché.

Cette dernière propriété est exactement ce qui manque à un lien physique, et c’est pourquoi l’approche classique par arborescence de liens physiques n’a jamais été envisageable : un lien physique est le même fichier, donc un éditeur qui écrit sur place réécrirait en silence la version que vous pensiez avoir gardée.

Comme capturer est gratuit, Retrace capture sans hésiter et laisse un hachage du contenu décider ensuite si la capture comptait. Ce qui n’est pas gratuit, c’est la conservation, et un clone coûte de plus en plus cher à mesure que l’original s’en éloigne. Le chiffre que montre l’app est donc ce que supprimer l’historique libérerait réellement, pas ce que les versions totalisent sur le papier : trente clones d’un fichier de 40 Mo font 1,2 Go selon le calcul naïf et 40 Mo en réalité. C’est aussi le chiffre qu’indique la feuille de suppression avant que vous retiriez une version à la main.

Le clonage est une propriété du volume plutôt que de l’app, et un disque externe formaté en HFS+ ou exFAT ne peut pas le faire du tout. Retrace le vérifie dès le départ et refuse le dossier, au lieu de transformer chaque capture en copie complète silencieuse.

Savoir quand un fichier est terminé

Rien sur macOS ne répond correctement à cette question. Le signal qui le ferait - « un processus vient de finir d’écrire ce fichier » d’Endpoint Security - nécessite un droit accordé par Apple, est incompatible avec le bac à sable et n’est pas accepté sur le Mac App Store. Il n’existe pas non plus de moyen de demander si un autre processus garde encore un fichier ouvert.

C’est donc une estimation par couches, et les couches ont le droit de se tromper, car elles ne décident que du moment où regarder. Savoir si un coup d’œil compte est décidé ensuite par le hachage. Une période calme de dix secondes par fichier regroupe la rafale d’enregistrements automatiques d’une session d’édition en une seule version - dix, c’est le chiffre qu’utilise l’historique local de VS Code, assez long pour fusionner une rafale et assez court pour que deux enregistrements délibérés à une minute d’intervalle restent deux versions. Ensuite, une sonde de stabilité vérifie que la taille, la date de modification et l’inode ont tous cessé de bouger ; une garde contre la longueur nulle attrape un éditeur qui tronque en plein vol ; une vérification de quarantaine attrape un téléchargement pas encore arrivé. Enregistrez un fichier sans le modifier et aucune version n’apparaît.

Quand vous préférez choisir le moment

Le panneau d’instantané de Retrace, avec un champ pour nommer le moment avant qu’il soit pris
Le raccourci fonctionne depuis l’app où vous êtes, et c’est tout l’intérêt : le moment qui mérite d’être marqué est rarement un moment où vous regardiez Retrace.

Enregistrer chaque sauvegarde convient à un dossier de thèse et pas à un dossier de rendus de quatre-vingts gigaoctets, c’est donc un réglage du dossier plutôt que de l’app. Un dossier à qui l’on dit d’attendre quitte le flux d’événements mais garde son autorisation ouverte, pour pouvoir être parcouru à l’instant où vous le demandez - et tout ce qu’un parcours enregistre partage un seul instant, c’est pourquoi un acte délibéré arrive sur la ligne du temps comme un seul moment plutôt que quatre cents.

Il y a trois façons de le demander. L’écran du dossier a une commande d’instantané, sur Cmd-S comme un enregistrement. Le sous-menu Historique du Finder propose Prendre un instantané. Et Ctrl-Opt-Cmd-S fait apparaître un petit panneau par-dessus l’app où vous êtes, prend un nom pour le moment, capture chaque dossier en attente et s’efface. Son pendant, Ctrl-Opt-Cmd-R, ouvre la fenêtre d’historique : Retrace n’a ni élément dans la barre des menus ni icône dans le Dock, donc un raccourci est le moyen d’y revenir. Les deux sont modifiables dans les réglages, et les deux utilisent trois touches de modification volontairement - un enregistrement global qui perd un conflit n’en est pas informé par macOS, donc la seule défense d’un raccourci par défaut est d’être une combinaison que personne d’autre n’utilise.

La conservation n’élimine jamais un instantané à cause de son âge. Dans un dossier qui n’enregistre que sur demande, ce sont les seules versions qui existent.

Distinguer un écrasement d’une modification

Un fichier glissé sur un autre dans le Finder et un fichier enregistré par son propre éditeur sont identiques pour toutes les API qu’offre macOS. Les deux laissent un fichier au chemin, les deux créent un nouvel inode - un enregistrement atomique renomme un fichier temporaire par-dessus la cible, et le Remplacer du Finder renomme une copie par-dessus exactement de la même façon - et les deux arrivent sous forme des mêmes événements du système de fichiers. Rien dans l’événement ne dit lequel s’est produit.

Une chose les distingue, et c’est la date de modification du fichier lui-même. Des octets écrits à un chemin portent le moment signalé par l’événement ; des octets produits ailleurs puis déplacés là portent la date qu’ils avaient là où ils ont été écrits. Le test consiste donc à vérifier si les octets sont plus anciens que l’événement qui les a annoncés, avec deux minutes de marge - largement au-delà du temps le plus long pendant lequel un gros fichier peut légitimement être retenu avant d’être capturé.

Cela attrape un remplacement dans le Finder, une décompression qui atterrit sur un document, cp -p, rsync, un client de synchronisation qui écrit la copie du serveur, une restauration depuis une sauvegarde. Cela n’attrape pas cp sans -p ni un téléchargement par navigateur, qui posent tous deux l’heure actuelle, et c’est volontaire : toutes les alternatives - hacher les octets précédents, comparer le contenu, analyser les formats - coûtent des ordres de grandeur de plus et se trompent à leur manière. Sous-déclarer est le bon type d’erreur pour un indicateur qui décide de ce qui est gardé.

Cela a aussi un effet en retour sur la fenêtre de dix secondes. Un fichier qui a été déposé ne l’attend pas. La fenêtre existe pour regrouper la rafale d’enregistrements automatiques d’un fichier en une seule version, et un dépôt n’est pas une rafale - le retenir là, c’est exactement ce qui permettrait à un second dépôt d’atterrir sur le premier et aux deux d’être classés comme un seul.

Ce que vous voyez : la liste des dossiers indique pour chaque dossier combien de ses fichiers ont été recouverts par quelque chose, la liste des fichiers marque ces lignes et propose un interrupteur pour n’afficher qu’elles, et sur la ligne du temps le moment indique que le fichier a été remplacé plutôt que modifié. La conservation prend le relais - la version sous un remplacement est gardée trente jours quoi qu’elle élimine par ailleurs, car un document écrit il y a un an et enseveli ce matin est exactement la copie que quelqu’un ouvre cette app pour récupérer.

Remonter le dossier dans le temps, et annuler ce retour

La ligne du temps d’un dossier dans Retrace : des moments regroupés par jour sur un seul axe, l’un sélectionné, un moment écrasé marqué Remplacé, et un bouton Revenir sous les fichiers du dossier
Choisissez un point sur l’axe et l’autre côté montre tout le dossier tel qu’il était alors, avec le retour en un seul bouton en dessous.

Un dossier actif produit des centaines d’instants de capture par jour, même après le travail de la fenêtre de fusion, alors la ligne du temps les regroupe. Des instants séparés de moins d’une minute forment un seul moment - enregistrer quatre documents dans la même demi-minute est une seule chose que vous avez faite, pas quatre - et les moments sont suspendus sous leur jour le long d’un axe qui descend depuis Maintenant. Chaque moment dit ce qui y a changé, et en sélectionner un montre tout le dossier tel qu’il était à ce point, pas seulement les fichiers qui ont bougé, avec en couleur la portion d’axe qu’un retour annulerait.

Revenir en arrière ramène tout le dossier à l’un de ces moments. Chaque chemin est vérifié avant que quoi que ce soit ne soit touché, car un plan dont une moitié est autorisée et l’autre refusée ne doit pas s’exécuter du tout : vous avez demandé un état, pas la plus grande partie d’un état. Ensuite, l’état actuel de tout ce que le retour va toucher est capturé, et cette étape est toute la réponse à « ramène-moi à maintenant ».

Les deux moitiés finissent sur la ligne du temps. L’acte a sa propre ligne qui dit où il est allé - « vous êtes revenu à 13:15 » - et l’état que vous avez quitté obtient un point juste avant ; aucun des deux ne se fond dans le travail alentour. Quand le retour se termine, le chemin inverse est déjà sélectionné, avec son plan construit, si bien que « ce n’était pas ça non plus » tient en un appui, et il est toujours là une fois la bannière disparue ou l’app relancée. L’annulation n’est pas un mécanisme à part ici, c’est un retour à ce point, et elle est aussi annulable que tout le reste sur la ligne du temps. La ligne dont le dossier détient actuellement l’état est dessinée différemment plutôt qu’étiquetée, si bien que l’endroit où vous êtes se voit au lieu de se déduire, et le premier enregistrement suivant la fait avancer avec le dossier.

Les fichiers que le retour supprime vont dans la Corbeille au lieu d’être effacés, tout comme les dossiers que ses propres suppressions ont vidés, du plus profond au moins profond, si bien qu’une arborescence créée depuis la cible disparaît entière - un dossier qui contient encore quelque chose que Retrace n’a jamais capturé reste où il est, car un retour ne doit jamais retirer ce qu’il ne pourrait pas remettre. Un fichier impossible à écrire n’interrompt pas le reste : les échecs sont rassemblés et nommés dans le rapport. Un retour qui a fait en silence onze choses sur douze est pire qu’un retour qui le dit.

Sauter à un jour

Un an d’historique, c’est un long défilement. Le bouton calendrier en haut de la ligne du temps affiche un mois à la fois avec les jours qui contiennent de l’historique marqués, et un jour vide ne peut pas être choisi. En choisir un mène à l’état dans lequel le dossier a été laissé ce jour-là, ce qui est en général ce que veut dire « c’était bon mardi ». Aller au plus récent vous ramène en haut.

Sortir le dossier tel qu’il était

Parfois vous voulez le dossier de mardi dernier sans renoncer à celui d’aujourd’hui. Faites un clic droit sur un moment de la ligne du temps et choisissez Exporter le dossier tel qu’il était ici, ou utilisez le bouton au-dessus du contenu du dossier, et chaque fichier tel qu’il était à ce moment est copié dans un nouveau dossier à l’endroit de votre choix. Votre dossier lui-même n’est pas touché. Le nouveau dossier doit se trouver hors de vos dossiers surveillés - à l’intérieur de l’un d’eux, la copie serait enregistrée comme un nouvel historique - et un export qui ne peut pas aboutir ne laisse rien derrière lui.

Remettre un seul fichier, après avoir vu ce qui a changé

Deux versions de styles.css comparées côte à côte dans Retrace, avec les lignes modifiées marquées
Le texte se compare ligne par ligne, les images par balayage ou différence amplifiée, et un PDF indique simplement quelles pages ont changé.

La plupart des récupérations portent sur un seul fichier, et pour elles le dossier n’est pas la bonne unité. Chaque ligne indique combien de versions elle contient et quand elle a changé pour la dernière fois, et un clic droit donne accès au fichier lui-même - l’afficher dans le Finder, ou l’ouvrir. Une version peut être restaurée sur place, ou écrite à côté de l’original sous forme de fichier voisin numéroté si vous préférez d’abord les comparer. Restaurer sur place capture le fichier actuel comme version avant d’écraser quoi que ce soit, ce qui rend le bouton sûr ; la version que le fichier contient déjà n’est pas proposée du tout, l’app le dit à la place.

Une version peut aussi sortir de l’historique sous forme de fichier à part entière. Faites-la glisser de la liste vers le Finder, ou choisissez Enregistrer une copie et placez-la n’importe où ; dans les deux cas, elle arrive nommée d’après le fichier et le moment, comme report (2026-10-25 14.32).docx, si bien que l’ancien brouillon se trouve à côté du nouveau et s’ouvre toujours dans l’app qui l’a créé. La version elle-même reste dans l’historique.

Et quand une version ne devrait pas du tout figurer dans l’historique, faites un clic droit dessus et supprimez-la, ou supprimez d’un coup toutes les versions d’un fichier. La feuille indique combien de versions partent et combien d’espace disque cela libère, et prévient avant de rompre une promesse - une version que vous avez choisi de garder pour toujours, la copie qui rend une restauration ou un retour annulable, la dernière copie d’un fichier qui n’existe plus. Un moment nommé qui perd la version sur laquelle il reposait passe à ce qui en reste, et un moment à qui il ne reste rien est supprimé, ce que la feuille dit avant que quoi que ce soit ne parte. Le fichier lui-même n’est pas touché.

La comparaison dépend du format, car « ce qui a changé » a une réponse utile différente pour chacun. Le texte se compare ligne par ligne. Les images ont un séparateur à balayer, un fondu en transparence, et un mode différence qui amplifie le résultat en fausses couleurs, car une simple différence entre deux images presque identiques donne une image noire avec un point dedans. Un PDF se compare en hachant le texte de chaque page, ce qui résiste au réordonnancement des objets que produit chaque réexport - une comparaison octet par octet déclarerait tout le fichier modifié - et répond à la granularité que l’on demande, à savoir « pages 3 et 7 ».

Retrouver une ancienne version par ce qu’elle disait

L’onglet Fichiers de Retrace cherchant slipway dans les anciennes versions : deux anciennes versions de notes.md contiennent le mot, et la plus récente ne le contient plus
Une recherche par nom trouve le fichier. Une recherche par contenu trouve la version qui le disait.

Parfois, vous ne savez pas de quel fichier il s’agissait, seulement ce qu’il disait - un paragraphe coupé le mois dernier, un chiffre dans un devis révisé depuis. Passez la recherche de l’onglet Fichiers de Noms à Contenu et tapez au moins deux lettres : Retrace parcourt les mots de chaque version enregistrée, pas seulement le fichier tel qu’il est maintenant, et ouvrir un résultat ouvre la version correspondante.

Elle lit le texte brut, les PDF (les 200 premières pages), et les documents RTF, Word et OpenDocument grâce au système de texte que macOS fournit déjà. Les images, les archives, les fichiers Pages et tout ce qui n’a pas de mots qu’elle puisse lire honnêtement sont laissés de côté plutôt que devinés, et un fichier de plus de 20 Mo n’est pas lu du tout. L’index est construit en arrière-plan et reste sur le Mac ; Rechercher dans les fichiers dans Réglages -> Stockage indique sa taille, et le désactiver le supprime.

Ce qu’elle ne fait volontairement pas

Ce n’est pas une sauvegarde. L’historique vit sur le même disque que le dossier, donc un disque en panne emporte les deux. C’est le compromis délibéré pour capturer quelques secondes après un enregistrement plutôt qu’une fois par heure, et c’est pourquoi Time Machine ou une copie hors site reste l’autre moitié.

Il n’y a ni synchronisation, ni app iPhone, ni compte, et elle fonctionne réseau coupé. Les fichiers qui ne vivent que dans le cloud sont ignorés plutôt que téléchargés, si bien qu’activer l’historique sur un dossier rempli de fichiers évacués ne peut pas rapatrier discrètement des gigaoctets sur le disque.

Certaines arborescences sont exclues par défaut : node_modules, DerivedData et .build parce qu’elles se régénèrent, .git et .svn parce qu’elles sont déjà un historique de versions, les photothèques et vidéothèques parce que ce sont des bases de données de plusieurs gigaoctets qui se réécrivent sans cesse. Chaque exclusion par défaut est visible et modifiable, car la seule chose pire qu’une mauvaise exclusion est une exclusion invisible.

L’historique s’allège avec l’âge au lieu de grossir indéfiniment : tout ce qui date des dernières 24 heures, une version par heure pendant une semaine, une par jour pendant un mois, puis une par semaine aussi longtemps que vous le gardez - 1, 3 ou 6 mois, un an (par défaut) ou toujours, un seul choix pour tous les dossiers dans Réglages -> Stockage. En dessous se trouve une liste de ce qui est toujours gardé, qu’aucun réglage ne contourne : les dix versions les plus récentes de chaque fichier, tout ce que vous avez choisi de garder pour toujours, chaque instantané que vous avez demandé, la dernière version d’un fichier qui n’existe plus, ce qu’un écrasement a remplacé pendant trente jours après celui-ci, et le chemin inverse d’un retour en arrière pendant trente jours. Un moment auquel vous donnez un nom est gardé pour de bon, et en nommer un n’efface jamais ce qu’un retour y a écrit.

Chaque dossier a aussi un budget disque, et les anciennes versions sont retirées en fonction de celui-ci, les plus anciennes d’abord. Automatique correspond à 5 Go ou un dixième de votre espace libre, selon le plus petit ; vous pouvez choisir à la place une taille fixe de 1 à 50 Go (1, 2, 5, 10, 25 ou 50), ou aucune limite. Quand ce que Retrace a promis de garder dépasse déjà le budget, elle le dit au lieu de rompre la promesse - augmentez le budget, retirez un dossier, ou supprimez vous-même une partie de l’historique.

Ce qu’elle coûte, et quoi regarder d’autre

Retrace nécessite macOS 14 ou ultérieur, fonctionne sur Apple Silicon et Intel, et occupe environ 25 Mo. C’est un achat unique de 13,99 $ avec un essai gratuit de 30 jours sans carte ni e-mail. La fiche complète se trouve sur la page de Retrace.

Si la question derrière tout cela est de savoir quelle couche de sauvegarde vous manque vraiment, un panorama se trouve dans les alternatives à Time Machine pour Mac - historique des versions et sauvegarde sont des travaux différents et la plupart des gens ont besoin des deux. Et si le vrai problème est que le disque est trop plein pour tout cela, Sweep est la voisine - elle range un dossier selon des règles que vous écrivez, dans trier automatiquement ses fichiers sur un Mac, et l’espace qu’elle libère est présenté dans libérer de l’espace disque sur un Mac.