Я пытаюсь точно понять, когда ctime метка времени файла изменяется. Во многих местах (например, в принятом ответе здесь) предложено, чтобы любое изменение в атрибутах файла также изменило ctime. Однако это, кажется, не верно, по крайней мере, на моей Ubuntu 12.04 (да, я знаю, немного старый...):
cat file.txt > /dev/null
изменяет atime, таким образом, он изменяет атрибуты файла (в файле inode), но не изменяет ctime.
Другие источники (например, здесь и здесь) предлагают, чтобы только некоторые операции на атрибутах файла на самом деле изменили ctime, но точный список не предоставлен.
Где я могу найти точную ссылку, на которую операции изменяют ctime?
В системах Unix существует три метки времени:
atime
: Время доступа Эта метка времени говорит Вам, когда файл был , получил доступ в прошлый раз, только включая чтение доступа.
ctime
: время Изменения Эта метка времени говорит Вам, когда файл приписывает (inode, информация) изменился в прошлый раз. Это включает, например, владение и полномочия, но довольное изменение также инициировало обновление этой метки времени.
Примечание, которое изменяется на atime, кажется, исключение , поскольку они не инициировали обновление ctime. Это, вероятно, потому что простой доступ для чтения, которого является достаточно для инициирования обновления atime, не вносит соответствующих изменений в атрибуты файла. И одна из основных целей ctime состоит в том, чтобы помочь резервировать инструменты, чтобы определить, изменился ли файл. atime является несоответствующей информацией для таких инструментов и обновления резервного копирования только для обновления измененного atime, потому что кто-то читал, файл был бы бесполезен.
я не уверен, но некоторые люди думают это поведение (изменения в atime не обновляют ctime) происходит только из-за опций монтирования (как relatime
) базовой файловой системы, что кэши и задерживают обновления atime в inode по причинам производительности в памяти и только применяют их к реальному inodes на диске (инициировавший обновление ctime) при определенных условиях.
@kos попробовал его и по-видимому монтируя FS с 'strictatime' 'опция, ctime, кажется, никогда не обновляет, если atime изменяется.
mtime
: Время изменения Эта метка времени говорит Вам, когда содержание файла было изменено в прошлый раз.
Так простой доступ для чтения с помощью cat FILENAME
только изменения atime, но не ctime, поскольку никакой атрибут файла не был изменен. Измененный atime не рассчитывает.