У системі 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.
На цьому інструкції завершено.