Récupérer l’historique de Safari effacée par iCloud

Je vais vous raconter un souci idiot qui m’a amené pas mal de prises de tête. Le tout est lié au cloud et à Safari.
compass

Bon, en fait, ça ne marche pas. J’ai encore eu le problème, et récupérer l’historique est une plaie.

J’ai changé d’iPhone récemment (passage à un iPhone SE) et après la restauration, petit bug : impossible d’envoyer des données dans la liste de lecture de Safari depuis une application tierce (Tweetbot et d’autres). La solution, après quelques recherches rapides, consiste à effacer les données de Safari sur l’iPhone (et ça fonctionne).

Pour le faire, rien de compliqué : Réglages -> Safari -> Effacer historique, données de site.

Sur l'iPhone

Sur l’iPhone

C’est à ce moment que commence mon problème : les données sont synchronisées entre les différents appareils via iCloud et effacer l’historique depuis un iPhone efface l’historique sur un Mac, un iPad, etc. Quelque chose qui m’énerve profondément : j’aime bien garder mon historique sur mon Mac, ne serait-ce que pour retourner sur une page qui – finalement – aurait pu servir ou pour avoir une proposition quand je cherche un service que j’utilise régulièrement.

TL;DR

-Effacer l’historique sur le Mac depuis Safari
-Désactiver la synchronisation Safari sur tous les appareils
-Récupérer l’historique dans une sauvegarde
-Réactiver la synchronisation Safari sur le Mac
-Attendre
-Réactiver la synchronisation sur les autres appareils

En plus complet

J’essaye la première idée qui me vient : restaurer le dossier utilisateur de Safari depuis une sauvegarde Time Machine. Petit problème, ça ne fonctionne tout simplement pas. Quelques recherches plus tard, j’apprends qu’il faut restaurer le dossier (/Users/Moi/Library/Safari) et les préférences (/Users/Moi/Library/Preferences/com.apple.Safari.plist), sinon ça pose des soucis. Même de cette façon, ça ne fonctionne pas : après quelques minutes, mon historique disparaît : iCloud synchronise les données en ligne, forcément plus récentes.

La méthode qui a marché pour moi demeure nettement plus énervant (et je vous passe les différents essais). Premièrement, il faut couper la synchronisation Safari sur tous les appareils (oui, même le Mac mini Server caché dans un meuble). Sur les appareils iOS, iCloud propose d’effacer les données, il faut le faire. Sur le Mac, avant de désactiver la synchronisation, il faut effacer l’historique depuis Safari (Historique -> Effacer l’historique). Une fois que c’est fait sur tous les appareils liés au compte iCloud, il faut attendre que la modification soit bien prise en compte chez Apple (ce n’est pas instantané visiblement).

Supprimer les données

Supprimer les données

La suite va consiste à récupérer la base de données contenant l’historique dans une sauvegarde. Il s’agit des fichiers dont le nom commence par History dans le dossier de Safari (/Users/Moi/Library/Safari). Vous pouvez zapper le HistoryIndex.sk, il sera reconstruit et ça peut régler des soucis. Petit aparté, si vous avez un History.plist vous pouvez le supprimer : il s’agit d’un reliquat d’anciennes versions de Safari. Jusqu’à Mavericks, Safari stockait l’historique dans un plist, alors que depuis Yosemite il s’agit d’une base de données SQLITE. Dans mon cas (je ne sais pas si c’est systématique), le fichier datant de Mavericks existait toujours mais n’avait plus été utilisé depuis la mise à jour vers Yosemite (sa dernière date de modification correspond au jour du lancement d’OS X 10.10) et encombrait donc mon SSD (22 Mo). Fin de l’aparté. Une fois Safari fermé, il faut donc remplacer les fichier par ceux issus de la sauvegarde et (re)lancer Safari.

Normalement, à ce moment, Safari devrait avoir récupéré l’historique (je parle au conditionnel, dans un de mes essais ça n’a pas fonctionné). L’étape suivante consiste à réactiver la synchronisation de Safari sur le Mac et attendre. Si tout a été bien purgé, l’historique devrait rester en place. De mes différents essais, il faut compter entre quelques minutes et quelques heures pour être certains que c’est le cas et qu’iCloud ne va pas remplacer l’historique. La synchronisation vers iCloud peut prendre du temps (j’ai laissé une nuit) si vous n’avez pas la fibre optique : ma base de données faisait 74 Mo, par exemple.Si après quelques heures tout semble fonctionner, les dernières étapes consistent à réactiver la synchronisation sur les autres appareils en espérant que ça garde bien l’historique.

Dans mon cas, ça semble bon : j’ai bien mon historique sur tous mes appareils. Mais j’aimerais quand même une option (même cachée) pour purger totalement le contenu stocké sur iCloud et envoyer les données à partir d’un seul appareil. Au passage, si vous voyez sur le Net une méthode qui passe par le menu Debug de Safari, ça ne fonctionne pas : la commande synchronise l’historique depuis les serveurs, ce qui n’est pas ce que je voulais.

Normalement, la méthode fonctionne, mais je n’ai pas tenté le diable en effaçant volontairement l’historique pour tester une seconde fois. A noter que ça a effacé mes cookies et désactivé mes extensions, mais c’est a priori à cause d’autres essais.