Dosya sistemleriİleriDosya sistemi zaman damgaları

ext4 inode zaman damgaları

ext4 inode'ları atime, ctime, mtime, dtime ve crtime tutar; ek alanlar nanosaniye ve aralığı 2446'ya uzatan epoch bitleri ekler.

01Konum

  • Inode table of each block group (byte offset = index × s_inode_size)

02Yanıtladığı sorular

  • Bir dosya ne zaman oluşturuldu (crtime), en son değiştirildi (mtime), üst verisi değişti (ctime) ve erişildi (atime)?
  • Bir inode ne zaman silindi (dtime)?
  • Nanosaniye değerleri doğal mı görünüyor yoksa bir araçla ayarlandığına dair iz mi taşıyor?

03Biçim ve sürümler

BiçimAlt 128 bayt: i_atime (0x8), i_ctime (0xC), i_mtime (0x10), i_dtime (0x14), 32 bit işaretli saniye. Genişletilmiş alan: i_ctime_extra (0x84), i_mtime_extra (0x88), i_atime_extra (0x8C), i_crtime (0x90), i_crtime_extra (0x94). Her *_extra alanında düşük 2 bit saniyeyi genişletir, üst 30 bit nanosaniyeyi tutar.
Geçerli olduğu sürümlerLinux çekirdeği ext4 belgeleri. Varsayılan inode kayıtları 256 bayttır; genişletilmiş alanlar yalnızca i_extra_isize onları kapsıyorsa geçerlidir.

04Temel alanlar

AlanNe anlatır
i_mtime / i_mtime_extraSon veri değiştirme zamanı.
i_ctime / i_ctime_extraSon inode değişikliği zamanı (üst veri).
i_atime / i_atime_extraSon erişim zamanı.
i_crtime / i_crtime_extraDosya oluşturma zamanı.
i_dtimeSilme zamanı; orphan_file özelliği yoksa açık ama bağlantısı kaldırılmış inode'lar için sonraki yetim inode numarası olarak kullanılır.
i_extra_isizeKullanılan genişletilmiş inode bayt sayısı; hangi *_extra alanlarının ve crtime'ın bulunduğunu belirler.

05Zaman damgaları

AlanKodlamaNot
atime, ctime, mtime, crtimeUnix seconds (int32) + 2 epoch bits + 30-bit nanosecondstv_sec = işaretli 32 bit değer + 2^32 × epoch bitleri; 2446-05-10'a kadar geçerlidir.
dtimeUnix seconds (int32), not widenedOcak 2038'de taşar.

Ham değerleri Zaman damgası çözücü, yerel saatleri ise Yerel saatten UTC'ye ile çözün.

06İnceleme akışı

  1. s_inode_size ve özellikler için süper bloğu okuyun, ardından inode'u blok grubunda bulun.
  2. *_extra alanlarını ve crtime'ı okumadan önce i_extra_isize'ı kontrol edin.
  3. Saniyeleri epoch bitleriyle çözün ve nanosaniyeleri ekleyin; beş zamanın tamamını raporlayın.
  4. Canlı sistemde oluşturma zamanı için statx (STATX_BTIME) kullanın; düz stat() crtime döndürmez.

07Yorum tuzakları

  • crtime ve dtime stat() ile döndürülmez; stat() tabanlı araçlar yalnızca atime, mtime ve ctime gösterir.
  • Çekirdek belgeleri, epoch bitleriyle 2038 sonrası ve 1970 öncesi tarihlerin kodlanmasında uzun süreli hatalar olduğunu belirtir.
  • atime güncellemeleri bağlama seçeneklerine bağlıdır; eski bir atime dosyanın okunmadığını kanıtlamaz.
  • Dosya sistemi sağlamadığında statx, STATX_BTIME içermeyen bir maske döndürebilir.

09Kaynaklar

  1. ext4 Data Structures and Algorithms — Index Nodes (Inode Timestamps) The Linux Kernel documentation · erişim 2026-10-14
  2. Linux kernel — Documentation/filesystems/ext4/inodes.rst Linux kernel (GitHub mirror) · erişim 2026-10-14
  3. statx(2) — Linux manual page man7.org · erişim 2026-10-14