Première rédaction de cet article le 14 avril 2014
Il m'est arrivé une aventure bizarre : j'ai dû intervenir sur une machine Windows. Le problème semblait simple, copier le disque d'une ancienne machine vers une nouvelle. Mais c'est plus difficile que cela n'en a l'air.
L'ancienne machine était sous Windows XP, qui, comme tout le monde le sait, n'est plus maintenu depuis quelques jours. La nouvelle était sous Windows 8 et il fallait évidemment récupérer les fichiers, les préférences, les données diverses. Comme les machines récentes ont forcément un disque plus gros que les anciennes, je me suis dit, dans mon ignorance totale, « le plus simple est de copier l'ancien disque dans un dossier du nouveau, on pourra arrêter tout de suite l'ancienne machine et ensuite déplacer à loisir les données vers le bon emplacement ». Certes, je ne connais rien à Windows. Mais ce n'est pas grave, n'importe quel commercial vous expliquera que Windows, contrairement à Unix, est convivial, est utilisable par M. Michu sans formation, et qu'il n'y aura donc pas de problème.
Je passe sur la configuration du partage de fichiers : Windows 7 avait introduit un nouveau mécanisme d'authentification, le Groupe résidentiel et configurer le serveur sous Windows 8 pour que la machine Windows XP puisse s'y connecter n'a pas été trivial, Windows XP ne pouvant pas rejoindre le groupe résidentiel. Bon, une fois que c'était fait, je me suis dit « c'est bon, je lance le cliquodrome, euh, l'Explorateur de fichiers et je copie tout le disque vers le serveur Windows 8 ». Problème (que les experts Windows ont sans doute senti venir depuis un certain temps) : il n'y a pas moyen de copier une arborescence si un seul fichier a un problème. La copie entière s'arrête. « Copying File c:\pagefile.sys The process cannot access the file because it is being used by another process. » Le problème est bien connu des utilisateurs avertis de Windows mais, curieusement, lorsque la question est posée sur un forum, tous les fanboys Microsoft se succèdent pour expliquer que c'est normal (un exemple où, comme le dit un participant frustré qui voulait juste copier ses fichiers « My GOD, you people are thick! Does MVP = something I don't know about, or could you all be that thick?! Only one poster all the way thru here so far bothered to know what the OP said. The rest of you appear to be quacks! »). Le raisonnement est que le fait qu'on ne puisse pas copier un fichier est une erreur fatale, puisque le dossier résultant ne sera pas complet. OK, que ce soit le comportement par défaut, je peux comprendre, mais qu'il n'y ait aucun moyen, avec l'Explorateur de fichiers officiel, de passer outre et de lui dire « copie-moi ce que tu peux », c'est très agaçant.
Comment on fait, alors ? Eh bien, si on veut le faire uniquement
avec des logiciels standard Windows XP, une seule solution, abandonner le
cliquodrome et passer en
ligne de commande. L'outil xcopy
a une option /C
(comme
Continue) qui permet d'ignorer les erreurs. Une
commande comme :
xcopy /C /H /F /S /E c:\ \\nouvellemachine\data\anciennemachine
fait à peu près ce qu'il faut et copie ce qu'elle peut, ignorant les
erreurs (fichiers inutiles comme l'espace de
pagination ou fichiers ouverts par une application). Sauf
qu'au bout d'un moment, xcopy s'arrête avec le message
Insufficient memory. N'ajoutez pas de
RAM, cela ne servirait à rien, le message est
faux. Ce n'est pas de mémoire que manque xcopy, c'est simplement qu'il
a rencontré un fichier dont le nom complet (avec le chemin dans les
dossiers) est trop long. Problème bien connu des experts et largement
documenté en ligne (mais comment on faisait pour régler les
problèmes Windows quand on n'avait pas
Google ?). Supprimer ce fichier (affiché juste
avant, grâce à /F
) ne suffirait pas, il peut y en
avoir d'autres plus tard.
On passe donc à un outil plus perfectionné, qui figure par défaut
dans les Windows récents mais qui n'était pas dans Windows XP,
robocopy (il faut le chercher dans Windows
Server 2003 Resource Kit Tools). L'option pour dire d'ignorer
les erreurs est plus tordue qu'avec xcopy (/R:0
/W:0
) mais elle marche, et la longueur des noms de fichier
n'est plus un problème :
robocopy c:\ \\nouvellemachine\data\anciennemachine /MIR /R:0 /W:0
Avec robocopy et quelques heures de patience, tout a été copié.
Alors, quelles leçons à en tirer ? D'abord, je suis bien conscient de mes limites en Windows. Je n'ai aucun doute qu'un vrai expert Windows aurait fait cela en dix fois moins de temps, sans cafouiller et sans utiliser Google. Je ne prétends pas avoir choisi la meilleure méthode (au lieu de robocopy, on aurait pu installer des logiciel tiers comme Supercopier ou xxcopy ou bien utiliser la fonction de « transfert facile » de Windows). Mais pourquoi prétend-on que Windows est utilisable par tous, sans lire la documentation et sans faire d'efforts ? Je suis au courant qu'Unix a aussi ses inconvénients mais, au moins, Unix ne prétend pas être « convivial ». La leçon à en tirer me semble être que, dès qu'on veut faire une opération peu commune, on doit faire appel à un spécialiste. (Je connais un utilisateur qui, achetant un nouvel ordinateur, a payé le vendeur pour faire cette opération de copie des anciens fichiers.)
Version PDF de cette page (mais vous pouvez aussi imprimer depuis votre navigateur, il y a une feuille de style prévue pour cela)
Source XML de cette page (cette page est distribuée sous les termes de la licence GFDL)