Всегда ли меняется каталог mtime при создании нового файла внутри?

12

Всегда ли это так, что когда в каталоге создается новый файл, меняется mtime каталога?

kolypto
источник
Это довольно легко проверить ...
2012 г.
6
Легко. Однако не на всех ОС и файловых системах сразу :)
kolypto

Ответы:

12

Краткий ответ - да, так и должно быть . Более длинный ответ следует.

Каталог - это особый вид файла; его содержимое представляет собой набор кортежей (имя файла, i-узел) . Таким образом, каталог mtime обновляется всякий раз, когда кортеж добавляется, удаляется или изменяется, то есть файл любого типа (включая жесткие ссылки и каталоги) добавляется, удаляется или переименовывается в каталоге (но не во вложенных каталогах - это разные " файлы ").

Обратите внимание, что при изменении метаданных файла (владелец, группа, режим, atime, ctime, mtime - размещается в i-node ), mtime НЕ обновляется (ни в файле, ни в директории dir), а в ctime файла .

См. Также том Базовых определений стандарта IEEE Std 1003.1-2001, раздел 4.7, Обновление времени файлов .

yrk
источник
1
Обратите внимание, что это верно только для файлов, которые создаются (и т. Д.) Непосредственно внутри рассматриваемого родительского каталога, но не для файлов, создаваемых (и т. Д.) В каталоге, расположенном в родительском каталоге. Возможно, это очевидно для других, но это было не для меня (мне пришлось проверить, чтобы найти ответ).
logidelic
1
@logidelic спасибо, я обновил ответ, чтобы сделать его более понятным.
yrk
Почему ctime каталога также изменяется, когда вы создаете в нем новый файл?
г-н Роланд