В системе Linux в свойствах файла файлового менеджера отображается только информация о дате последнего обращения к нему и дате изменения. Но вот дата создания там отсутствует. При этом иногда нужно посмотреть именно ее, например, чтобы узнать, с какого момента ведется запись лога. В этой инструкции расскажем, как посмотреть какие данные хранятся в файловых системах Linux и объясним, как узнать дату создания файла Linux. Будут упомянуты сразу же два удобных способа, каждый из которых со своими особенностями.
В стандарте POSIX прописаны только 3 вида временных меток, которые должна хранить файловая система:
Поэтому в старых файловых системах посмотреть информацию о дате создания файла зачастую невозможно. А вот в современных файловых системах (ext4, zfs, XFS и т. д.) она уже сохраняется.
Данные о дате создания записываются в специальном поле:
Известно две методики просмотра этой информации: с помощью утилиты stat и debugfs. Однако первый метод подойдет пользователям не каждого дистрибутивов Linux. Второй способ – универсальный, но не такой простой в использовании. Разберемся с каждым из них по отдельности.
Утилита stat выводит подробные сведения о файле. В том числе выводится дата создания файла Linux. Для ее запуска в терминале достаточно указать путь к файлу. Для примера посмотрим информацию про изображение pic_1.jpeg, хранящееся в каталоге /home/root-user/Pictures:
$ stat /home/root-user/Pictures/pic_1.jpeg
Необходимая информация записана в графе Создан. А с помощью опции -c получится задать определенные правила форматирования для вывода информации, например, оставив только нужную графу:
$ stat -c '%w' /home/root-user/Pictures/pic_1.jpeg
Но есть одна небольшая трудность. На некоторых дистрибутивах Linux при использовании утилиты stat это поле будет пустым.
Основная причина заключается в том, что выводимая информация отображается в в statx(2). Оболочка была добавлена в библиотеку glibc версии 2.28. То есть поддержка этой оболочки появилась в наборе базовых системных утилит GNU coreutils 8.31. Чтобы проверить версию, следует выполнить такую команду:
$ stat --version
Следовательно, stat сможет выводить данные о создании файла только при наличии конкретных условий, которые были описаны выше. Например, в дистрибутиве Ubuntu 21.10 все работает без каких-либо проблем, а в Ubuntu 20.04 поле будет пустым.
Утилита DebugFS не имеет ограничений по версии. Она будет работать всегда. Но и процедура использования у нее несколько более запутанная. Связано это с тем, что для просмотра даты создания файла через debugfs, нужно узнать номер его inode и файловую систему. Получить inode выйдет с помощью команды ls с опцией -i, указав путь к файлу:
$ ls -i /home/root-user/scripts/main_script.txt
Для просмотра файловой системы пригодится команда df:
$ df /home/root-user/scripts/main_script.txt
Теперь все нужные данные собраны, и можно переходить к использованию утилиты debugfs. Ей нужно передать опцию -R, указать номер inode, а затем название файловой системы:
$ sudo debugfs -R 'stat <28>' /dev/sda5
После этого в терминале вы сможете найти поле, в котором хранится дата создания. В нашем случае это crtime.
На этом инструкции завершена.