Как ctime изменяется?

Я пытаюсь точно понять, когда ctime метка времени файла изменяется. Во многих местах (например, в принятом ответе здесь) предложено, чтобы любое изменение в атрибутах файла также изменило ctime. Однако это, кажется, не верно, по крайней мере, на моей Ubuntu 12.04 (да, я знаю, немного старый...):

cat file.txt > /dev/null

изменяет atime, таким образом, он изменяет атрибуты файла (в файле inode), но не изменяет ctime.

Другие источники (например, здесь и здесь) предлагают, чтобы только некоторые операции на атрибутах файла на самом деле изменили ctime, но точный список не предоставлен.

Где я могу найти точную ссылку, на которую операции изменяют ctime?

8
задан 23 May 2017 в 05:39

1 ответ

В системах 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 не рассчитывает.

8
ответ дан 23 November 2019 в 05:43

Другие вопросы по тегам:

Похожие вопросы: