Le tunneling des systèmes de fichiers Windows

Le « tunneling » d’un système de fichiers est le fait qu’un nouveau fichier récupère quelques métadonnées de celui qui vient d’être effacé si le nom est identique.
C’est une caractéristique propre à Windows et disponible pour NTFS et FAT/exFAT (non disponible avec UDFS).

À quoi sert ce truc étrange ?

En étant sarcastique, on peut décrire cette particularité comme une complication du système pour ne pas embêter les mauvais programmeurs. C’est d’ailleurs une marque de fabrique de Microsoft : faire en sorte que les programmes mal écrits fonctionnent tout de même relativement bien. Ils favorisent ainsi la production de programmes, même mauvais, donc les mauvais programmeurs, engendrant ainsi indirectement de meilleures parts de marchés.
Il n’y a pas que Microsoft qui joue à cela. Par exemple Adaptec ignore les commandes « flush » pour une grosse majorité de ses cartes RAID (y compris celles sans accu) afin que certains logiciels qui gèrent mal la sécurité des accès disque (c’est à dire la majorité des logiciels…) fonctionnent bien plus rapidement. Beaucoup d’ingénieurs systèmes sont alors convaincus que la carte RAID qui vient d’être d’installée est vraiment très performante, alors qu’en réalité le débit réel est souvent moins bon qu’avant.

Par exemple lorsqu’un programme tel qu’un éditeur de texte met à jour un fichier il peut procéder comme ceci :

  1. création d’un nouveau fichier (par exemple temp.txt) avec le contenu mis à jour
  2. effacement du fichier d’origine (par exemple mon_texte.txt)
  3. renommage du fichier temporaire temp.txt → mon_texte.txt

Dans ce cas Windows préserve certaines métadonnées : la date de création, et le nom court.
Cela permet de faire comme si le programme avait effectivement mis à jour le fichier au lieu de le remplacer (note : c’est une très bonne pratique de créer un fichier temporaire, mais c’est une mauvaise pratique de renommer sans se préoccuper des métadonnées).

Par défaut la fenêtre de tunneling est de 15 secondes, ce qui est bien assez long pour que certaines personnes se fassent piéger en renommant manuellement des fichiers qui se trouvent alors non détectés par certains systèmes de synchronisation ou de sauvegarde.

Il faudrait simplement utiliser l’appel système qui permet ce type de mise à jour sécurisée des fichiers. Mais il faut être un minimum compétent, ce qui est une qualité peu courante dans le monde de l’informatique.