W systemie Linux właściwości pliku w menedżerze plików pokazują tylko informacje o dacie ostatniego dostępu do pliku i dacie modyfikacji. Ale data utworzenia nie jest tam wyświetlana. Czasami trzeba na nią spojrzeć, na przykład, aby dowiedzieć się, kiedy rejestr jest nagrywany. W tej instrukcji powiemy ci, jak zobaczyć, jakie dane są przechowywane w systemach plików Linux i wyjaśnimy, jak znaleźć datę utworzenia pliku Linux. Wspomnimy od razu o dwóch wygodnych sposobach, z których każdy ma swoją własną specyfikę.
Standard POSIX określa tylko 3 rodzaje znaczników czasu, które system plików musi przechowywać:
Dlatego w starych systemach plików często niemożliwe jest wyświetlenie informacji o dacie utworzenia pliku. Ale w nowoczesnych systemach plików (ext4, zfs, XFS i tak dalej) jest ona już przechowywana.
Dane o dacie utworzenia są zapisywane w specjalnym polu:
Istnieją dwie metody wyświetlania tych informacji: stat i debugfs. Jednak pierwsza metoda nie jest odpowiednia dla użytkowników każdej dystrybucji Linuksa. Druga metoda jest uniwersalna, ale nie tak łatwa w użyciu. Zajmijmy się każdą z nich osobno.
Narzędzie stat wyświetla szczegółowe informacje o pliku. Między innymi wyświetla datę utworzenia pliku Linux. Aby uruchomić je w terminalu, wystarczy podać ścieżkę do pliku. Na przykład, spójrzmy na informacje o obrazie pic_1.jpeg
przechowywanym w katalogu /home/root-user/Pictures
:
$ stat /home/root-user/Pictures/pic_1.jpeg
Niezbędne informacje są zapisywane w kolumnie Created. Za pomocą opcji -c można ustawić pewne reguły formatowania informacji wyjściowych, na przykład pozostawiając tylko niezbędną kolumnę:
$ stat -c '%w' /home/root-user/Pictures/pic_1.jpeg
Jest jednak jedna mała trudność. W niektórych dystrybucjach Linuksa pole to będzie puste podczas korzystania z narzędzia stat.
Głównym powodem jest to, że dane wyjściowe są wyświetlane w statx(2). Powłoka została dodana do biblioteki glibc w wersji 2.28. Oznacza to, że obsługa tej powłoki pojawiła się w zestawie podstawowych narzędzi systemowych GNU coreutils 8.31. Aby sprawdzić wersję, uruchom to polecenie:
$ stat --version
W związku z tym stat
będzie w stanie wyświetlić dane dotyczące tworzenia plików tylko wtedy, gdy wystąpią określone warunki opisane powyżej. Na przykład w dystrybucji Ubuntu 21.10 wszystko działa bez żadnych problemów, ale w Ubuntu 20.04 pole będzie puste.
Narzędzie DebugFS nie ma ograniczeń dotyczących wersji. Będzie działać zawsze. Jednak procedura jego użycia jest nieco bardziej skomplikowana. Wynika to z faktu, że aby wyświetlić datę utworzenia pliku za pomocą debugfs, musisz znać jego numer inode i system plików. Aby uzyskać inode, użyj polecenia ls
z opcją -i
, określając ścieżkę do pliku:
$ ls -i /home/root-user/scripts/main_script.txt
Aby wyświetlić system plików, przyda się polecenie df
:
$ df /home/root-user/scripts/main_script.txt
Teraz masz wszystkie niezbędne dane i możesz przejść do narzędzia debugfs. Musisz przekazać do niego opcję -R
, określić numer inode
, a następnie nazwę systemu plików:
$ sudo debugfs -R 'stat <28>' /dev/sda5
Następnie będziesz mógł znaleźć w terminalu pole, w którym przechowywana jest data utworzenia. W naszym przypadku jest to crtime.
Na tym kończą się instrukcje.