Synchronisation désynchronisée resynchronisée

samedi 12 janvier 2008

Quel titre étrange ! Il vaut mieux l'expliquer tout de suite : parmi les fonctionnalités proposées par le service .Mac d'Apple, la synchronisation permet de garder automatiquement certains éléments à jour sur plusieurs Mac simultanément. On synchronise notamment le trousseau d'accès (ou keychains), ensemble de données chiffrées représentant les mots de passe enregistrés sur des sites Web. Mais .Mac étant ce qu'il est, il arrive parfois que les données se désynchronisent. Les données sont alors différentes sur chaque Mac et sur l'iDisk. Les conséquences sont souvent fâcheuses, surtout lorsqu'on fait confiance au système de synchronisation : des enregistrements plus anciens effacent des enregistrements récents, des enregistrements supprimés reviennent comme par miracle ou pire, tout disparaît. Il faut alors resynchroniser le tout, ce qui est plus facile à dire qu'à faire. Cet article est le récit de deux mésaventures avec la synchronisation du trousseau 1Password et avec l'iDisk.

Quel titre étrange ! Il vaut mieux l’expliquer tout de suite : parmi les fonctionnalités proposées par le service .Mac d’Apple, la synchronisation permet de garder automatiquement certains éléments à jour sur plusieurs Mac simultanément. On synchronise notamment le trousseau d’accès (ou keychains), ensemble de données chiffrées représentant les mots de passe enregistrés sur des sites Web. Mais .Mac étant ce qu’il est, il arrive parfois que les données se désynchronisent. Les données sont alors différentes sur chaque Mac et sur l’iDisk. Les conséquences sont souvent fâcheuses, surtout lorsqu’on fait confiance au système de synchronisation : des enregistrements plus anciens effacent des enregistrements récents, des enregistrements supprimés reviennent comme par miracle ou pire, tout disparaît. Il faut alors resynchroniser le tout, ce qui est plus facile à dire qu’à faire. Cet article est le récit de deux mésaventures avec la synchronisation du trousseau 1Password et avec l’iDisk.

Synchronisation du trousseau 1Password

Le logiciel 1Password est bien connu dans le monde Mac depuis un peu plus de d’une année. Il s’agit d’un logiciel formidable, qui devient vite indispensable (généralement dans les 10 minutes qui suivent son installation…). La fonction principale du logiciel est de récupérer tous les mots de passe des pages Web et de les enregistrer dans le Trousseau de Mac OS X, pour les restituer ensuite lors des visites ultérieures. Il permet également de stocker des données importantes de manière sécurisée, telles que des codes d’activation de logiciels et de générer de manière aléatoire des mots de passe complexes (alphanumériques avec des symboles, quasiment impossibles à retenir). Depuis février 2007, j’ai accumulé exactement 415 couples nom d’utilisateur / mot de passe de sites Web que 1Password retient à ma place. Lorsque je me rends sur une page Web pour laquelle j’ai enregistré un mot de passe, il me suffit de taper un raccourci clavier prédéfini pour que 1Password remplisse le formulaire de connexion à ma place. Certes, Safari fait déjà cela, mais 1Password présente deux avantages fondamentaux. D’une part, il permet d’utiliser la même base de données sur plusieurs navigateurs, dont Firefox qui n’utilise normalement pas le Trousseau de Mac OS X, et dont les mots de passe ne peuvent donc pas être synchronisés par le biais de .Mac. D’autre part, il permet d’enregistrer plusieurs mots de passe différents pour un même site ; très pratique lorsqu’on a plusieurs comptes !

Je synchronise habituellement les trousseaux entre 3 ordinateurs, un PowerBook G4, un iMac et un MacPro. Pour une raison qui m’est inconnue, la synchronisation a subitement cessé de fonctionner il y a quelques temps. Les données ne se mettaient plus à jour, elles ne fusionnaient plus. Si j’ajoutais un mot de passe A sur le PowerBook et un mot de passe B sur l’iMac, le mot de passe A n’était pas transmis à l’iMac et le mot de passe B n’était pas transmis au PowerBook. Le problème ne se présentait cependant qu’avec le trousseau 1Password : le trousseau «session» (qui contient les mots de passe enregistrés par Safari) n’était pas affecté.

J’ai essayé une première manipulation pour résoudre le problème : réinitialiser les données de synchronisation avec la version la plus à jour. Je suis donc allé dans les Préférences systèmes du menu Pomme du Mac à jour, section .Mac, onglet Synchronisation. J’ai ensuite cliqué sur le bouton Avancé puis sur le bouton Réinitialiser les données de synchronisation. J’ai indiqué que je voulais que la synchronisation aille dans le sens Ordinateur => .Mac et j’ai confirmé que je voulais remplacer toutes les données de .Mac par celles de l’ordinateur. Une fois la synchronisation terminée (sans erreur), j’ai refait la même chose sur un autre Mac, dont les trousseaux n’étaient pas à jour, en choisissant cette fois d’écrire les données dans l’autre sens, c’est-à-dire en remplaçant les données de l’ordinateur par celles de .Mac. Cela n’a absolument rien donné. J’ai retrouvé dans le trousseau 1Password exactement les mêmes données qu’avant, les mêmes différences entre le premier Mac et le second…

J’ai alors essayé une autre procédure, drastique. J’ai remplace le trousseau 1Password du Mac non à jour par celui du Mac à jour. Pour ce faire, j’ai choisi Backup Keychains dans le menu File de 1Password du Mac à jour. Cela a créé un fichier de sauvegarde du trousseau et ouvert une fenêtre du Finder à l’emplacement de ce fichier. J’ai transféré le fichier sur le Mac non à jour à l’emplacement idoine (~/Keychains/Backups), puis j’ai choisi de restaurer la sauvegarde dans 1Password en passant par le menu File, Restore Keychain from Backup. J’ai alors obtenu une version à jour de mon trousseau. Cela n’a pas duré. J’ai désenchanté à la première modification du trousseau sur l’un ou l’autre des ordinateurs. La synchronisation persistait à ne pas s’opérer ; les données étaient véritablement désynchronisées.

J’ai alors fouillé un peu sur le Web, notamment sur les forums de 1Password. Une des méthodes préconisées consiste à réinitialiser non seulement les données de synchronisation (première manipulation décrite ci-dessus), mais à réinitialiser en outre les enregistrements des appareils à synchroniser. Autrement dit, faire en sorte que .Mac croit que chaque Mac opère la première synchronisation de son histoire. Il s’agit d’un remise à plat totale. Il faut se rendre dans les Préférences systèmes du menu Pomme, section .Mac, onglet Synchronisation et cliquer sur le bouton Avancé. Jusque là, rien de nouveau. La nouveauté apparaît maintenant : il faut sélectionner une entrée dans la liste des appareils synchronisés et cliquer sur le bouton Annuler l’enregistrement, puis répéter la même procédure pour chacune des autres entrées de la liste. Il n’est pas nécessaire faire cela sur chaque ordinateur synchronisé, il suffit d’effacer les entrées correspondant à chaque ordinateur depuis n’importe lequel d’entre eux (est-ce clair ?). Une fois tous les ordinateurs rayés de la liste, une petite fenêtre apparaît et demande si l’on veut effacer les données de synchronisation de l’iDisk, celles-ci étant devenues inutiles. Il faut bien entendu accepter la proposition. Une fois fait, on doit re-cocher la case Synchroniser avec .Mac dans l’onglet Synchronisation de la section .Mac des Préférences système d’un Mac à jour, puis toutes les cases des différents éléments à synchroniser (contacts, signets, widgets, calendriers, trousseaux, etc). La sauvegarde des données sur .Mac est donc toute fraîche après synchronisation. Il ne restera plus qu’à synchroniser les autres ordinateurs en choisissant de remplacer toutes les données de l’ordinateur par celles de .Mac.

En théorie, cela doit fonctionner. En pratique, cela n’a pas fonctionné (sic). En effet, mon trousseau 1Password a été complètement vidé sur mon PowerBook, alors qu’il restait indemne sur mon MacPro. Malgré plusieurs synchronisation forcées, le PowerBook refusait de prendre en compte le trousseau 1Password lors de la synchronisation. Et, bien entendu, aucun message d’erreur n’apparaissait. Tout se passait très bien, sauf qu’en réalité rien ne se passait.

Las, je suis allé consulter la Kbase d’Apple (base de connaissances sur les technologies mises en oeuvre sur Mac). J’ai trouvé cet article très intéressant sur le Trousseau d’accès qui suggère de le vérifier et, le cas échéant, de le réparer. C’est ce que j’ai décidé de faire. J’ai ouvert le Trousseau d’accès qui se trouve dans Applications/Utilitaires et j’ai choisi S.O.S. Trousseau dans le menu Trousseau d’accès. J’ai ensuite rentré mon mot de passe administrateur et j’ai cliqué sur Réparer. Horreur, il y avait des erreurs ! Bonheur, elles furent réparées !

Après cette petite réparation, je me suis dit que j’allais une fois de plus tout remettre à plat. J’ai donc refait pour la nième fois la procédère décrite ci-dessus de réinitialisation des données de synchronisation. Cela n’a rien donné. Mais je me suis rendu compte que la case Synchronise this keychain with .Mac des préférences de 1Password était décochée (menu 1Password, Preferences, section Keychain, bouton Edit keychain settings…). Je l’ai cochée et j’ai redémarré 1Password. Le logiciel a recréé le trousseau 1Password dans le Trousseau d’accès (je suppose que ce trousseau avait été détruit par ma précédente synchronisation «à vide», sans en être sûr). Ce trousseau régénéré était totalement vide. J’ai alors lancé une dernière synchronisation .Mac qui fut –enfin– couronnée de succès. J’avais finalement toutes mes données à jour…

La synchronisation est censée faire gagner du temps, en évitant d’avoir à transférer manuellement des fichiers, mais il est évident qu’elle peut également en faire perdre beaucoup, les données ayant tendance à être corrompues pour je ne sais quelles raisons. A relativiser tout de même : je n’avais jamais eu de tel problème en un an d’utilisation de 1Password. Cela doit être l’effet Leopard

Synchronisation des paquets

Puisque cet article a pour sujet la synchronisation, je ne pouvais éviter de parler du problème de la synchronisation des paquets.

On connaît depuis longtemps les dossiers ou répertoires qui sont à la base de tout système de fichiers et qui contiennent des fichiers. Mac Os X a introduit une nouveauté : les paquets. Ceux-ci sont des dossiers qui apparaissent comme des fichiers. Autrement dit, l’utilisateur a l’impression qu’il ne s’agit que d’un seul fichier, alors qu’il s’agit en fait d’un dossier contenant une multitude de fichiers. C’est par exemple le cas des fichiers OpenXML (à l’extension .docx) générés par Microsoft Word. C’est aussi le cas, sur Mac, de nombreux fichiers créés par divers logiciels comme DevonThink ou Scrivener ou, plus généralement, de l’immense majorité des logiciels. Pour s’en persuader, on peut faire un clic-droit sur n’importe quel logiciel du dossier Application et choisir, dans le menu déroulant qui apparaît, l’option Afficher le contenu du paquet.

Depuis très longtemps, sur tous les systèmes (Mac, Windows, Linux), lorsqu’on copie un fichier à un emplacement où il existe déjà, le système demande si l’on veut annuler l’opération ou remplacer l’ancien fichier par le nouveau. Le problème est qu’il en va de même avec les dossiers. De cette manière, si l’on choisit de remplacer, l’entier contenu de l’ancien dossier sera remplacé par celui du nouveau dossier, même ce qui n’avait pas changé. En d’autres termes, il s’agit d’un écrasement ou d’un remplacement intégral, et non d’une synchronisation. C’est extrêmement problématique lorsqu’on doit synchroniser une ou plusieurs fois par jour un paquet de plusieurs Go par Internet. Cela prend des heures, tout simplement parce que ce paquet es traité comme un dossier, alors que si le système était assez intelligent pour proposer une synchronisation, seuls les fichiers modifiés seraient transmis ! Ainsi, ma base de données DevonThink ne mettrait pas 3 heures par jour à se synchroniser, mais plutôt 30 secondes, puisque seulement une petite partie des fichiers ont été modifiés.

Certains logiciels de sauvegarde ou de synchronisation présentent le même défaut. Ils comparent en effet les emplacements à synchroniser à partir de la date de la dernière modification des fichiers. Or, si les paquets sont traités comme des fichiers, la moindre modification d’un fichier du paquet comptera pour une modification du paquet entier ! Le paquet de 3 Go devra être recopié intégralement, même si un seul fichier de 3 Ko a été ajouté ! Le problème peut être facilement résolu en utilisant un logiciel de synchronisation qui permet de synchroniser les fichiers en traitant les paquets comme des dossiers. Ces logiciels intelligents considèrent que les paquets sont des dossiers et qu’il ne faut modifier, à l’intérieur de ces dossiers, que les fichiers qui ont réellement été mis à jour. J’utilise le logiciel ChronoSync, particulièrement intelligent et efficace, qui me permet de synchroniser en un rien de temps les seuls fichiers modifiés depuis la dernière synchronisation.

Malheureusement, Apple a jusqu’à présent choisir d’ignorer le problème. La synchronisation automatique de l’iDisk considère que la moindre modification à l’intérieur d’un paquet équivaut à la modification du paquet en son entier. Vu la lenteur des transferts sur l’iDisk avec le Finder, il est impossible de maintenir à jour une base de données de plus de quelques Mo. Peut être cela fera-t-il partie des bonnes résolution d’Apple pour 2018…