- Понимание временных меток файлов Linux: mtime, ctime и atime
- Каковы три временные метки Unix?
- Как временные метки применяются к каталогам
- Как насчет времени создания?
- Как просмотреть различные временные метки
- Временные метки файлов в Linux: atime, mtime, ctime. Разъяснения
- Что такое метки времени Linux?
- atime
- mtime
- ctime
- Как просмотреть временные метки файла?
- Каково использование временных меток файлов?
- Как узнать, когда был изначально создан файл?
- File Timestamps in Linux: atime, mtime, ctime Explained
- What are Linux timestamps?
- atime
- mtime
- ctime
- How to see the timestamps of a file?
- What is the use of file timestamps?
- How to know when a file was originally created?
Понимание временных меток файлов Linux: mtime, ctime и atime
Операционная система Linux отслеживает три временные метки для каждого файла в вашей системе. Эти временные метки позволяют узнать, когда файл обновлялся в последний раз. Но что все они означают? И как вы узнаете это время для файла? Есть ли разница, когда дело доходит до каталогов?
Понимание atime, ctime и mtime может ответить на все эти вопросы. Это три временные метки, которые отслеживают файловые системы Unix. Если вам когда-нибудь понадобится узнать подробности о том, что изменилось и когда, читайте дальше.
Каковы три временные метки Unix?
Каждый файл имеет три временных метки, связанные с ним. Linux хранит их в формате времени Unix, который измеряет секунды с момента эпохи. Эти три временных метки обычно называются atime, ctime и mtime.
Mtime является наиболее распространенным и часто наиболее полезным. Это означает измененное время . Это время, когда содержимое файла в последний раз записывалось на диск.
Немного отличается ctime , который обозначает время изменения . Эта временная метка отслеживает изменения метаданных, такие как права собственности и разрешения. Это включает в себя переименование файла — по крайней мере, в типичных современных ОС Linux. Но он также обновляется при изменении содержимого файла, поэтому он всегда так же актуален, как и mtime.
Третья метка времени — это atime , которая хранит время последнего доступа к файлу.
Как временные метки применяются к каталогам
Каталог Linux — это, по сути, список файлов в этом каталоге. Таким образом, создание файла внутри каталога обновит mtime этого каталога. Например, перечисление файлов в каталоге с помощью команды ls обновляет время доступа. И, как и в случае с файлом, изменение разрешений или имени каталога обновляет его ctime.
Как насчет времени создания?
Возможно, вас удивит, что Linux просто не отслеживает время создания. Изначально можно предположить, что ctime означает время создания. Точно так же вы можете подумать об этом как об очень полезной вещи, которую можно узнать.
Многие приложения сохраняют файлы, создавая их с нуля каждый раз. Это сделало бы использование времени создания вводящим в заблуждение.
Как просмотреть различные временные метки
Самый простой способ получить информацию о временных метках — это команда ls. Длинный формат по умолчанию показывает детали для mtime:
Временные метки файлов в Linux: atime, mtime, ctime. Разъяснения
Добавить в избранное
Главное меню » Операционная система Linux » Временные метки файлов в Linux: atime, mtime, ctime. Разъяснения
Д авайте посмотрим, каковы различные типы временных меток файлов в Linux, как просмотреть временные метки для файла и как изменить метки времени.
В Linux каждый файл имеет некоторые временные метки, которые предоставляют некоторые важные аналитики о том, когда файл или его атрибуты были модифицированы или изменены. Давайте посмотрим на эти временные метки в деталях.
Что такое метки времени Linux?
Любой файл в Linux обычно имеет три временных метки:
atime
atime означает время доступа. Эта временная метка сообщает вам, когда был последний раз обращались к файлу. При доступе это означает, что если вы использовали cat, vim, less или какой-либо другой инструмент для чтения или отображения содержимого файла.
mtime
mtime означает время модификации. Эта временная метка сообщает вам, когда был последний раз модифицирован файл. Это означает, что содержимое файла было изменено путем редактирования файла.
ctime
ctime означает время изменения статуса. Эта временная метка сообщает вам, когда был последний раз были изменены свойства и метаданные файла. Метаданные включают права доступа, права собственности, имя и местоположение файла.
Как просмотреть временные метки файла?
Вы можете использовать команду stat для просмотра всех временных меток файла. Использование команды stat очень просто. Вам просто нужно указать имя файла.
stat andreyex.txt File: andreyex.txt Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 10305h/66309d Inode: 11936465 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/andreyex) Gid: ( 1000/andreyex) Access: 2018-10-07 23:10:25.134647523 +0530 Modify: 2018-10-07 23:10:25.134647523 +0530 Change: 2018-10-07 23:10:25.134647523 +0530 Birth: -
Вы можете увидеть все три временных метки (доступ, модифицирование и изменение) в приведенном выше выводе. Все три временных метки здесь одинаковы, потому что мы просто создали этот пустой файл с командой touch.
Теперь давайте изменим эти временные метки.
Если мы используем команду less для чтения файла, это изменит только время доступа, потому что содержимое и метаданные файла остаются неизменными.
$ less andreyex.txt $ stat andreyex.txt File: andreyex.txt Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 10305h/66309d Inode: 11936465 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/andreyex) Gid: ( 1000/andreyex) Access: 2018-10-07 23:15:12.847568584 +0530 Modify: 2018-10-07 23:10:25.134647523 +0530 Change: 2018-10-07 23:10:25.134647523 +0530 Birth: -
Теперь давайте изменим время модификации. Мы будем использовать команду cat для добавления нового текста в этот файл. Это предотвратит изменение времени доступа.
$ cat >> andreyex.txt demo text ^C $ stat andreyex.txt File: andreyex.txt Size: 10 Blocks: 8 IO Block: 4096 regular file Device: 10305h/66309d Inode: 11936465 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/andreyex) Gid: ( 1000/andreyex) Access: 2018-10-07 23:15:12.847568584 +0530 Modify: 2018-10-07 12:32:34.751320967 +0530 Change: 2018-10-07 12:32:34.751320967 +0530 Birth: -
Вы заметили что-то странное? Вы изменили файл и ожидали изменения mtime, но также изменили время ctime.
Запомните, ctime всегда изменяет mtime, это потому, что пока время изменения находится под контролем пользователя, ctime контролируется системой. Он представляет собой, когда в последний раз были изменены блоки данных или метаданные файла. Если вы изменяете файл, блоки данных изменяются и, следовательно, ctime изменяется.
Вы можете изменить ctime только путем изменения прав доступа к файлам, используя CHMOD или же командой chgrp, но вы не можете модифицировать mtime без изменения ctime.
Вы также не можете изменять ctime в прошлом обычными способами. Это своего рода функция безопасности, потому что она сообщает вам в последний раз, когда файл был изменен. Даже если кто-то изменяет mtime и устанавливает его в прошлом для злонамеренных целей, ctime укажет фактическое время, когда mtime было изменено.
Каково использование временных меток файлов?
Это помогает при анализе. Там может быть несколько ситуаций, когда вам нужно ссылаться на отметки времени файла. Например, вы можете увидеть, был ли файл изменен в последнее время или нет, когда он должен был быть изменен.
Одним из наших любимых способов было найти файлы журналов приложения с помощью mtime. Запустите приложение и просто зайдите в родительский каталог приложения и выполните поиск файлов, которые были изменены за последние несколько минут.
Мы уже показали вам выше, что он также может помочь в анализе того, кто обратился к файлам или модифицировал их злонамеренно. Временные метки играют важную роль в таких ситуациях.
Как узнать, когда был изначально создан файл?
Вы заметили последнюю строку вывода команды stat? В нем указывается «Birth». Вы можете догадаться, что это представляет собой timestmap, когда файл был «рожден» (или был создан, чтобы быть более точным).
Собственно, там является еще одна временная метка называется временем создания (cr). Не все файловые системы поддерживают эту метку времени. Ext4 — одна из популярных файловых систем Linux, и хотя она поддерживает временную метку создания, команда stat в настоящее время не может ее показать. Возможно, будущие версии команды stat покажут временную метку создания в разделе «Birth».
Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.
File Timestamps in Linux: atime, mtime, ctime Explained
Let’s see what are the various kinds of file timestamps in Linux, how to see the timestamps for a file and how to change the timestamps.
In Linux, every file has some timestamps that provide some crucial analytics about when the file or its attributes were modified or changed. Let’s see these timestamps in detail.
What are Linux timestamps?
Any file in Linux has these three timestamps typically:
atime
atime stands for access time. This timestamp tells you when was the last time the file was accessed. By access, it means if you used cat, vim, less, or some other tool to read or display the content of the file.
mtime
mtime stands for modify time. This timestamp tells you when was the last time the file was modified. Modifying means the contents of a file were changed by editing the file.
ctime
ctime stands for status change time. This timestamp tells you when was the last time the property and metadata of the file were changed. The metadata includes file permissions, ownership, name, and location of the file.
How to see the timestamps of a file?
You can use the stat command to see all the timestamps of a file. Using stat command is very simple. You just need to provide the filename with it.
The output will be like this:
stat abhi.txt File: abhi.txt Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 10305h/66309d Inode: 11936465 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek) Access: 2018-08-30 12:19:54.262153704 +0530 Modify: 2018-08-30 12:19:54.262153704 +0530 Change: 2018-08-30 12:19:54.262153704 +0530 Birth: -
You can see all three timestamps (access, modify and change) time in the above output. All three timestamps are the same here because I just created this empty file with the touch command.
Now let’s modify these timestamps.
If I use the less command to view the file, it will change only the access time because the content and metadata of the file remain the same.
$ less abhi.txt $ stat abhi.txt File: abhi.txt Size: 0 Blocks: 0 IO Block: 4096 regular empty file Device: 10305h/66309d Inode: 11936465 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek) Access: 2018-08-30 12:25:13.794471295 +0530 Modify: 2018-08-30 12:19:54.262153704 +0530 Change: 2018-08-30 12:19:54.262153704 +0530 Birth: -
Now let’s change the modify time. I’ll use the cat command to add new text to this file. This will prevent the change in access time.
$ cat >> abhi.txt demo text ^C $ stat abhi.txt File: abhi.txt Size: 10 Blocks: 8 IO Block: 4096 regular file Device: 10305h/66309d Inode: 11936465 Links: 1 Access: (0644/-rw-r--r--) Uid: ( 1000/abhishek) Gid: ( 1000/abhishek) Access: 2018-08-30 12:25:13.794471295 +0530 Modify: 2018-08-30 12:32:34.751320967 +0530 Change: 2018-08-30 12:32:34.751320967 +0530 Birth: -
Did you notice something weird? You modified the file and expected the mtime to be changed, but it also changed the ctime.
Remember, ctime is always changed with mtime. It’s because while mtime is under the control of user, ctime is controlled by the system. It represents the last time the data blocks or metadata of a file was changed. If you modify the file, the data blocks change, and thus ctime is changed.
You can change ctime alone by modifying file permissions using chmod or chgrp commands but you cannot modify mtime without modifying ctime.
You can also not change ctime in the past by normal means. It is a kind of security feature because it tells you the last time the file was changed. Even if someone modifies mtime and sets it in the past for malicious purposes, ctime will indicate the actual time when the mtime was changed.
What is the use of file timestamps?
It helps a lot in analyzing. There could be several situations where you need to refer to the timestamps of a file. For example, you can see if a file was modified recently or not when it was supposed to be modified.
One of my favorite use was to locate log files of an application with mtime. Run the application and just go into the parent directory of the application and search for the files that have been modified in the last few minutes.
I already showed you above that it can also help in analyzing if someone accessed the files or modified them maliciously. Timestamps play an important role in such situations.
How to know when a file was originally created?
Did you notice the last line of stat command output? It says ‘Birth’. You may guess that this represents the timestmap when the file was ‘born’ (or created, to be more precise).
Actually, there is one more timestamp called creation time (cr). Not all filesystems support this timestamp. Ext4 is one of the popular Linux filesystems, and though it supports the creation timestamp, the stat command is currently unable to show it. Maybe the future versions of the stat command will show the creation timestamp in the Birth section.