Dela via


Ändra journalposter

När filer, kataloger och andra NTFS-filsystemobjekt läggs till, tas bort och ändras, anger NTFS-filsystemet ändringsjournalposter i strömmar, en för varje volym på datorn. Varje post anger typen av ändring och objektet har ändrats. Förskjutningen från början av dataströmmen för en viss post kallas uppdateringssekvensnummer (USN) för den specifika posten. Nya poster läggs till i slutet av strömmen.

NTFS-filsystemet kan ta bort gamla poster för att spara utrymme. Om nödvändiga poster har tagits bort återställs indexeringstjänsten genom att omindexera volymen, precis som när det inte finns någon ändringsjournal.

Ändringsjournalen loggar endast det faktum att en fil har ändrats och orsaken till ändringen (till exempel skrivåtgärder, trunkering, förlängdhet, borttagning och så vidare). Den registrerar inte tillräckligt med information för att göra det möjligt att återställa ändringen.

Dessutom kan flera ändringar i samma fil leda till att endast en orsaksflagga läggs till i den aktuella posten. Om samma typ av ändring sker mer än en gång skriver NTFS-filsystemet inte en ny post för ändringarna efter den första. Flera skrivåtgärder utan mellanliggande stängnings- och återöppningsåtgärder resulterar till exempel bara i en ändringspost med orsaksflaggan USN_REASON_DATA_OVERWRITE inställd.

Anta att en användare kommer åt en fil i följande ordning för att illustrera hur ändringsjournalen fungerar:

  1. Skriver till filen.
  2. Anger tidsstämpeln för filen.
  3. Skriver till filen.
  4. Trunkerar filen.
  5. Skriver till filen.
  6. Stänger filen.

I det här fallet vidtar NTFS-filsystemet följande åtgärder i ändringsjournalen (där | anger en bitvis OR-åtgärd).

Händelse NTFS-filsystemåtgärd
Inledande skrivåtgärd
NTFS-filsystemet skriver en ny USN-post med flaggan USN_REASON_DATA_OVERWRITE orsak inställd. Mer information om möjliga orsaksflaggor finns i USN_RECORD struktur.
Inställning av filtidsstämpel
NTFS-filsystemet skriver en ny USN-post med flagginställningen USN_REASON_DATA_OVERWRITE | USN_REASON_BASIC_INFO_CHANGE.
Andra skrivåtgärden
NTFS-filsystemet skriver ingen ny USN-post. Eftersom USN_REASON_DATA_OVERWRITE redan har angetts för den befintliga posten görs inga ändringar i posten.
Filtrunkering
NTFS-filsystemet skriver en ny USN-post med flagginställningen USN_REASON_DATA_OVERWRITE | USN_REASON_BASIC_INFO_CHANGE | USN_REASON_DATA_TRUNCATION.
Tredje skrivåtgärden
NTFS-filsystemet skriver ingen ny USN-post. Eftersom USN_REASON_DATA_OVERWRITE redan har angetts för den befintliga posten görs inga ändringar i posten.
Stäng åtgärd
Om användaren som gör ändringar är den enda användaren av filen skriver NTFS-filsystemet en ny USN-post med följande flagginställning: USN_REASON_DATA_OVERWRITE | USN_REASON_BASIC_INFO_CHANGE | USN_REASON_DATA_TRUNCATION | USN_REASON_CLOSE.

Ändringsjournalen ackumulerar en serie poster mellan den första öppningen och den sista stängningen av en fil. Varje post har en ny orsaksflagga som anger att en ny typ av ändring har inträffat. Sekvensen med poster ger en partiell historik över filen. Den sista posten, som skapas när filen stängs, lägger till flaggan USN_REASON_CLOSE. Den här posten representerar en sammanfattning av ändringar i filen, men till skillnad från tidigare poster ger ingen indikation på ordningen på ändringarna.

Nästa användare som ska komma åt och ändra filen genererar en ny USN-post med en enda orsaksflagga.