Способи оплати Abuse

Як подивитися дату створення файлу в Linux

22.04.2022, 18:05

У системі Linux у властивостях файлу файлового менеджера відображається тільки інформація про дату останнього звернення до нього і дату зміни. Але ось дата створення там відсутня. При цьому іноді потрібно подивитися саме її, наприклад, щоб дізнатися, з якого моменту ведеться запис лога. У цій інструкції розповімо, як подивитися, які дані зберігаються у файлових системах Linux і пояснимо, як дізнатися дату створення файлу Linux. Буде згадано одразу ж два зручних способи, кожен з яких зі своїми особливостями.

Дата створення файлу

У стандарті POSIX прописано тільки 3 види тимчасових міток, які має зберігати файлова система:

  • atime - час останнього звернення до файлу.
  • mtime - час останньої зміни вмісту.
  • ctime - час останньої модифікації прав доступу або власника.

Тому в старих файлових системах подивитися інформацію про дату створення файлу часто неможливо. А ось у сучасних файлових системах (ext4, zfs, XFS тощо) вона вже зберігається.

Дані про дату створення записуються в спеціальному полі:

  • Ext4 - crtime
  • ZFS - crtime
  • XFS - crtime
  • Btrfs - otime
  • JFS - di_otime

Відомо дві методики перегляду цієї інформації: за допомогою утиліти stat та debugfs. Однак перший метод підійде користувачам не кожного дистрибутивів Linux. Другий спосіб - універсальний, але не такий простий у використанні. Розберемося з кожним із них окремо.

Використовуємо Stat

Утиліта 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

Але є одна невелика складність. На деяких дистрибутивах Linux під час використання утиліти stat це поле буде порожнім.

Як подивитися дату створення файлу в Linux

Основна причина полягає в тому, що інформація, яку виводять, відображається в statx(2). Оболонка була додана до бібліотеки glibc версії 2.28. Тобто підтримка цієї оболонки з'явилася в наборі базових системних утиліт GNU coreutils 8.31. Щоб перевірити версію, слід виконати таку команду:

$ stat --version

Як подивитися дату створення файлу в Linux

Отже, stat зможе виводити дані про створення файлу лише за наявності конкретних умов, які були описані вище. Наприклад, у дистрибутиві Ubuntu 21.10 все працює без будь-яких проблем, а в Ubuntu 20.04 поле буде порожнім.

Використовуємо DebugFS

Утиліта DebugFS не має обмежень за версією. Вона працюватиме завжди. Але й процедура використання у неї дещо заплутаніша. Пов'язано це з тим, що для перегляду дати створення файлу через debugfs, потрібно дізнатися номер його inode і файлову систему. Отримати inode вийде за допомогою команди ls з опцією -i, вказавши шлях до файлу:

$ ls -i /home/root-user/scripts/main_script.txt

Як подивитися дату створення файлу в Linux

Для перегляду файлової системи знадобиться команда df:

$ df /home/root-user/scripts/main_script.txt

Як подивитися дату створення файлу в Linux

Тепер усі потрібні дані зібрано, і можна переходити до використання утиліти debugfs. Їй потрібно передати опцію -R, вказати номер inode, а потім назву файлової системи:

$ sudo debugfs -R 'stat <28>' /dev/sda5

Як подивитися дату створення файлу в Linux

Після цього в терміналі ви зможете знайти поле, в якому зберігається дата створення. У нашому випадку це crtime.

На цьому інструкції завершено.