Начини на плащане 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

Необходимата информация е записана в колоната Created (Създадено). А с помощта на опцията -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, да посочите номера на инода и след това името на файловата система:

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

Как да видите датата на създаване на файла в Linux

След това ще можете да намерите в терминала полето, в което се съхранява датата на създаване. В нашия случай това е crtime.

С това инструкциите са изпълнени.