Udostępnij przez


Zmienianie rekordów dziennika

Ponieważ pliki, katalogi i inne obiekty systemu plików NTFS są dodawane, usuwane i modyfikowane, system plików NTFS wprowadza rekordy dziennika zmian w strumieniach, po jednym dla każdego woluminu na komputerze. Każdy rekord wskazuje typ zmiany, a obiekt uległ zmianie. Przesunięcie od początku strumienia dla określonego rekordu jest nazywane numerem sekwencji aktualizacji (USN) dla określonego rekordu. Nowe rekordy są dołączane na końcu strumienia.

System plików NTFS może usuwać stare rekordy, aby zaoszczędzić miejsce. W razie potrzeby rekordy zostały usunięte, usługa indeksowania odzyskuje dane przez ponowne indeksowanie woluminu, tak jak w przypadku braku dziennika zmian.

Dziennik zmian rejestruje tylko fakt zmiany w pliku i przyczynę zmiany (na przykład operacje zapisu, obcinanie, przedłużanie, usuwanie itd.). Nie rejestruje wystarczającej ilości informacji, aby umożliwić odwrócenie zmiany.

Ponadto wiele zmian w tym samym pliku może spowodować dodanie tylko jednej flagi przyczyny do bieżącego rekordu. Jeśli ten sam rodzaj zmiany występuje więcej niż raz, system plików NTFS nie zapisuje nowego rekordu dla zmian po pierwszym. Na przykład kilka operacji zapisu bez interweniowania operacji zamykania i ponownego otwierania powoduje, że tylko jeden rekord zmiany z ustawioną flagą przyczyny USN_REASON_DATA_OVERWRITE.

Aby zilustrować działanie dziennika zmian, załóżmy, że użytkownik uzyskuje dostęp do pliku w następującej kolejności:

  1. Zapisuje w pliku.
  2. Ustawia sygnaturę czasową pliku.
  3. Zapisuje w pliku.
  4. Obcina plik.
  5. Zapisuje w pliku.
  6. Zamyka plik.

W takim przypadku system plików NTFS wykonuje następujące akcje w dzienniku zmian (gdzie | wskazuje bitową operację OR).

Zdarzenie Akcja systemu plików NTFS
Początkowa operacja zapisu
System plików NTFS zapisuje nowy rekord USN z ustawioną flagą przyczyny USN_REASON_DATA_OVERWRITE. Aby uzyskać więcej informacji na temat możliwych flag przyczyn, zobacz strukturę USN_RECORD.
Ustawienie sygnatury czasowej pliku
System plików NTFS zapisuje nowy rekord USN z ustawieniem flagi USN_REASON_DATA_OVERWRITE | USN_REASON_BASIC_INFO_CHANGE.
Druga operacja zapisu
System plików NTFS nie zapisuje nowego rekordu USN. Ponieważ USN_REASON_DATA_OVERWRITE jest już ustawiona dla istniejącego rekordu, żadne zmiany nie są wprowadzane do rekordu.
Obcinanie pliku
System plików NTFS zapisuje nowy rekord USN z ustawieniem flagi USN_REASON_DATA_OVERWRITE | USN_REASON_BASIC_INFO_CHANGE | USN_REASON_DATA_TRUNCATION.
Trzecia operacja zapisu
System plików NTFS nie zapisuje nowego rekordu USN. Ponieważ USN_REASON_DATA_OVERWRITE jest już ustawiona dla istniejącego rekordu, żadne zmiany nie są wprowadzane do rekordu.
Operacja zamykania
Jeśli użytkownik wprowadzający zmiany jest jedynym użytkownikiem pliku, system plików NTFS zapisuje nowy rekord USN z następującym ustawieniem flagi: USN_REASON_DATA_OVERWRITE | USN_REASON_BASIC_INFO_CHANGE | USN_REASON_DATA_TRUNCATION | USN_REASON_CLOSE.

Dziennik zmian gromadzi serię rekordów między pierwszym otwarciem i ostatnim zamknięciem pliku. Każdy rekord ma ustawioną nową flagę przyczyny wskazującą, że wystąpił nowy rodzaj zmiany. Sekwencja rekordów daje częściową historię pliku. Końcowy rekord utworzony po zamknięciu pliku dodaje flagę USN_REASON_CLOSE. Ten rekord reprezentuje podsumowanie zmian w pliku, ale w przeciwieństwie do poprzednich rekordów, nie wskazuje kolejności zmian.

Następny użytkownik, aby uzyskać dostęp do pliku i zmienić go, generuje nowy rekord USN z pojedynczą flagą przyczyny.