Modifier les enregistrements du journal

À mesure que des fichiers, des répertoires et d’autres objets de système de fichiers NTFS sont ajoutés, supprimés et modifiés, le système de fichiers NTFS entre les enregistrements de journal des modifications dans les flux, un pour chaque volume sur l’ordinateur. Chaque enregistrement indique le type de modification et l'objet modifié. Le décalage du début du flux pour un enregistrement particulier est appelé numéro de séquence de mise à jour (USN) pour l’enregistrement particulier. Les nouveaux enregistrements sont ajoutés à la fin du flux.

Le système de fichiers NTFS peut supprimer d’anciens enregistrements pour conserver de l’espace. Si les enregistrements nécessaires ont été supprimés, le service d’indexation récupère en réindexant le volume, comme il le fait lorsqu’il n’existe aucun journal des modifications.

Le journal des modifications consigne uniquement le fait d’une modification apportée à un fichier et la raison de la modification (par exemple, les opérations d’écriture, la troncation, l’allongement, la suppression, etc.). Il n’enregistre pas suffisamment d’informations pour permettre d’inverser la modification.

En outre, plusieurs modifications apportées au même fichier peuvent entraîner l’ajout d’un seul indicateur de raison à l’enregistrement actif. Si le même type de modification se produit plusieurs fois, le système de fichiers NTFS n’écrit pas de nouvel enregistrement pour les modifications après le premier. Par exemple, plusieurs opérations d’écriture sans opérations de fermeture et de réouverture intermédiaires aboutissent à un seul enregistrement de modification avec l’indicateur de raison USN_REASON_DATA_OVERWRITE défini.

Pour illustrer le fonctionnement du journal des modifications, supposons qu’un utilisateur accède à un fichier dans l’ordre suivant :

  1. Écrit dans le fichier.
  2. Définit l’horodatage du fichier.
  3. Écrit dans le fichier.
  4. Tronque le fichier.
  5. Écrit dans le fichier.
  6. Ferme le fichier.

Dans ce cas, le système de fichiers NTFS effectue les actions suivantes dans le journal des modifications (où | indique une opération OR au niveau du bit).

Événement Action du système de fichiers NTFS
Opération d’écriture initiale
Le système de fichiers NTFS écrit un nouvel enregistrement USN avec l’indicateur de raison USN_REASON_DATA_OVERWRITE défini. Pour plus d’informations sur les indicateurs de raison possibles, consultez la structure USN_RECORD .
Paramètre de l’horodatage de fichier
Le système de fichiers NTFS écrit un nouvel enregistrement USN avec le paramètre d’indicateur USN_REASON_DATA_OVERWRITE | USN_REASON_BASIC_INFO_CHANGE.
Deuxième opération d’écriture
Le système de fichiers NTFS n’écrit pas de nouvel enregistrement USN. Étant donné que USN_REASON_DATA_OVERWRITE est déjà défini pour l’enregistrement existant, aucune modification n’est apportée à l’enregistrement.
Troncation de fichier
Le système de fichiers NTFS écrit un nouvel enregistrement USN avec le paramètre d’indicateur USN_REASON_DATA_OVERWRITE | USN_REASON_BASIC_INFO_CHANGE | USN_REASON_DATA_TRUNCATION.
Troisième opération d’écriture
Le système de fichiers NTFS n’écrit pas de nouvel enregistrement USN. Étant donné que USN_REASON_DATA_OVERWRITE est déjà défini pour l’enregistrement existant, aucune modification n’est apportée à l’enregistrement.
Opération de fermeture
Si l’utilisateur qui apporte des modifications est le seul utilisateur du fichier, le système de fichiers NTFS écrit un nouvel enregistrement USN avec le paramètre d’indicateur suivant : USN_REASON_DATA_OVERWRITE | USN_REASON_BASIC_INFO_CHANGE | USN_REASON_DATA_TRUNCATION | USN_REASON_CLOSE.

Le journal des modifications accumule une série d’enregistrements entre le premier ouverture et la dernière fermeture d’un fichier. Chaque enregistrement a un nouveau jeu d’indicateurs de raison, ce qui indique qu’un nouveau type de modification s’est produit. La séquence d’enregistrements donne un historique partiel du fichier. L’enregistrement final, créé lorsque le fichier est fermé, ajoute l’indicateur USN_REASON_CLOSE. Cet enregistrement représente un résumé des modifications apportées au fichier, mais contrairement aux enregistrements précédents, ne donne aucune indication de l’ordre des modifications.

L’utilisateur suivant pour accéder au fichier et le modifier génère un nouvel enregistrement USN avec un indicateur de raison unique.