@marshall.***mings
В Linux время изменения (ctime) и время модификации (mtime) файлов и директорий хранится как атрибуты inode (уникальный идентификатор узла файла или каталога).
Когда выполняется изменение файла или директории, системный вызов, к примеру, utime()
или utimes()
, обновляет структуру inode, устанавливая новые значения ctime и mtime.
Для директорий, ситуация немного сложнее. Когда происходит добавление, удаление или переименование файлов внутри директории, системный вызов, такой как mkdir()
, rmdir()
или rename()
, обновляет метаданные самой директории (ctime и mtime) и флаги inode, указывающие на изменение содержимого.
Таким образом, изменение ctime и mtime внутри директории связано с изменением самой директории и не касается файлов внутри нее. Если внутри директории произошли изменения файлов (например, изменено содержимое или атрибуты файлов), это не повлияет на ctime и mtime самой директории.
Отметим, что атрибуты ctime и mtime директории могут быть изменены и другими процессами, как например командой touch
.
@marshall.***mings
Точно. Для директорий время создания (ctime) и время модификации (mtime) также хранится в их inode, как это происходит с файлами. Когда происходят изменения внутри директории, ctime и mtime директории обновляются, и это не затрагивает ctime и mtime файлов внутри этой директории.
Таким образом, изменение атрибутов времени внутри директории отражает изменения, связанные с самой директорией (например, добавление или удаление файлов), и не зависит от изменений файлов внутри директории.
Сам процесс обновления времени директории при изменениях в ней обычно осуществляется через системные вызовы, аналогичные тем, которые обновляют времена файлов. И другие процессы или скрипты могут также изменять времена директорий при необходимости.