POSIX-файлы обычно имеют три временные метки, однако современные ФС, например, ext4 поддерживают на одну больше. Для чего нужны таймстемпы и как их изменить, поговорим в сегодняшней статье.
POSIX - это набор стандартов, созданный для обеспечения совместимости различных UNIX-подобных операционных систем.
Что такое временные метки файла?
Файловая система хранит информацию о файле, в том числе время его создания, последнего изменения и т.д.
Записи о времени создания, изменения, доступа к файлу и называются временными метками. Они могут использоваться для отладки работы программы или скрипта, но чаще всего их используют при создании бэкапов.
Какие временные метки существуют?
POSIX описывает три временные метки:
- atime (access timestamp) - время последнего чтения содержимого файла;
- mtime (modification timestamp) - время последнего изменения содержимого файла;
- ctime (change timestamp) - время последнего изменения атрибутов файла.
Современные файловые системы поддерживают четвёртую временную метку:
- birthtime (birth timestamp) - время создания файла, эта метка не может быть изменена.
Для чего нужны временные метки?
Рассмотрим упрощённую задачу создания бэкапа директории. Если мы создаём резервную копию каталога впервые, туда помещаются все содержащиеся в нём файлы.
Через какое-то время нам нужно повторить операцию, но копировать все файлы снова не рационально. Достаточно сравнить временные метки и скопировать только те файлы, которые подвергались изменению.
В чём разница между mtime и ctime?
Поле mtime хранит время последнего редактирования содержимого файла, т.е. если переименовать файл или изменить его права доступа, эта метка не будет изменена. Здесь на помощь приходит метка ctime:
Обновление временных меток файлов
Временные метки должны обновляться всякий раз, когда над файлом выполняются какие-либо действия, однако на деле это может быть не всегда так. Для повышения производительности, файловая система может не обновлять некоторые метки или брать их значения из других меток, например, для изменения значения atime берётся время из записи mtime.
Чтобы обновить временные метки вручную, используйте команду touch.
Заключение
На этом краткий обзор timestamp'ов подошёл к концу. Если у вас появились какие-то вопросы во время чтения материала, просьба задать их в комментариях.
Пожалуйста, оцените мой труд лайком и подпиской, это позволит вам чаще видеть в ленте подобный контент. Всего доброго!)
---
Другие статьи по теме Linux:
Поддержать мой труд:
- Сбербанк: 2202 2013 5155 5152
- Тинькофф: 2200 7008 1567 2323