Aller au contenu

Écriture atomique

Écriture atomique (en anglais atomic write) : façon de remplacer le contenu d'un fichier sans qu'aucun lecteur ne puisse jamais en voir une version partielle ou mélangée. On écrit le nouveau contenu dans un fichier temporaire du même système de fichiers, on le ferme, puis on le renomme vers le nom définitif : d'après rename(2), le remplacement est atomique, tout lecteur voit soit l'ancien fichier, soit le nouveau.

Entre deux systèmes de fichiers, mv ne renomme plus mais copie puis supprime, et l'opération perd cette garantie : c'est pourquoi le fichier temporaire se crée à côté de la destination (mktemp -p "$(dirname "$cible")"), pas dans /tmp. Pour résister aussi à une coupure de courant, il faut en plus forcer l'écriture sur disque (sync du fichier, puis du répertoire) avant et après le renommage. L'écriture atomique évite à la fois les fichiers tronqués après un plantage et les conditions de concurrence avec un lecteur.

Dans les cours

Voir aussi