Alterar registros de diário

À medida que arquivos, diretórios e outros objetos do sistema de arquivos NTFS são adicionados, excluídos e modificados, o sistema de arquivos NTFS insere registros de diário de alteração em fluxos, um para cada volume no computador. Cada registro indica o tipo de alteração e o objeto alterado. O deslocamento do início do fluxo para um registro específico é chamado de USN (número de sequência de atualização) para o registro específico. Novos registros são acrescentados ao final do fluxo.

O sistema de arquivos NTFS pode excluir registros antigos para conservar espaço. Se os registros necessários tiverem sido excluídos, o serviço de indexação se recuperará reindexando o volume, como faz quando não existe nenhum diário de alteração.

O diário de alteração registra apenas o fato de uma alteração em um arquivo e o motivo da alteração (por exemplo, operações de gravação, truncamento, alongamento, exclusão e assim por diante). Ele não registra informações suficientes para permitir a reversão da alteração.

Além disso, várias alterações no mesmo arquivo podem resultar na adição de apenas um sinalizador de motivo ao registro atual. Se o mesmo tipo de alteração ocorrer mais de uma vez, o sistema de arquivos NTFS não gravará um novo registro para as alterações após a primeira. Por exemplo, várias operações de gravação sem operações de fechamento e reabertura intervindo resultam em apenas um registro de alteração com o sinalizador reason USN_REASON_DATA_OVERWRITE definido.

Para ilustrar como funciona o diário de alterações, suponha que um usuário acesse um arquivo na seguinte ordem:

  1. Grava no arquivo.
  2. Define o carimbo de data/hora do arquivo.
  3. Grava no arquivo.
  4. Trunca o arquivo.
  5. Grava no arquivo.
  6. Fecha o arquivo.

Nesse caso, o sistema de arquivos NTFS executa as seguintes ações no diário de alteração (em que | indica uma operação OR bit a bit).

Evento Ação do sistema de arquivos NTFS
Operação de gravação inicial
O sistema de arquivos NTFS grava um novo registro USN com o sinalizador de motivo USN_REASON_DATA_OVERWRITE definido. Para obter mais informações sobre possíveis sinalizadores de motivo, consulte a estrutura USN_RECORD .
Configuração do carimbo de data/hora do arquivo
O sistema de arquivos NTFS grava um novo registro USN com a configuração de sinalizador USN_REASON_DATA_OVERWRITE | USN_REASON_BASIC_INFO_CHANGE.
Segunda operação de gravação
O sistema de arquivos NTFS não grava um novo registro USN. Como USN_REASON_DATA_OVERWRITE já está definido para o registro existente, nenhuma alteração é feita no registro.
Truncamento de arquivo
O sistema de arquivos NTFS grava um novo registro USN com a configuração de sinalizador USN_REASON_DATA_OVERWRITE | USN_REASON_BASIC_INFO_CHANGE | USN_REASON_DATA_TRUNCATION.
Terceira operação de gravação
O sistema de arquivos NTFS não grava um novo registro USN. Como USN_REASON_DATA_OVERWRITE já está definido para o registro existente, nenhuma alteração é feita no registro.
Fechar operação
Se o usuário que faz alterações for o único usuário do arquivo, o sistema de arquivos NTFS gravará um novo registro USN com a seguinte configuração de sinalizador: USN_REASON_DATA_OVERWRITE | USN_REASON_BASIC_INFO_CHANGE | USN_REASON_DATA_TRUNCATION | USN_REASON_CLOSE.

O diário de alteração acumula uma série de registros entre a primeira abertura e o último fechamento de um arquivo. Cada registro tem um novo sinalizador de motivo definido, indicando que ocorreu um novo tipo de alteração. A sequência de registros fornece um histórico parcial do arquivo. O registro final, criado quando o arquivo é fechado, adiciona o sinalizador USN_REASON_CLOSE. Esse registro representa um resumo das alterações no arquivo, mas, ao contrário dos registros anteriores, não fornece nenhuma indicação da ordem das alterações.

O próximo usuário a acessar e alterar o arquivo gera um novo registro USN com um único sinalizador de motivo.