Num sistema Linux, as propriedades de um ficheiro no gestor de ficheiros mostram apenas informações sobre a data do último acesso ao ficheiro e a data de modificação. Mas a data de criação não é mostrada. Por vezes, é necessário olhar para ela, por exemplo, para saber quando é que o registo está a ser gravado. Nesta instrução vamos dizer-lhe como ver que dados estão armazenados nos sistemas de ficheiros Linux e explicar como descobrir a data de criação de um ficheiro Linux. Serão mencionadas duas formas convenientes, cada uma com as suas particularidades.
A norma POSIX especifica apenas 3 tipos de marcas de tempo que um sistema de ficheiros deve armazenar:
É por isso que nos sistemas de ficheiros antigos é muitas vezes impossível ver informações sobre a data de criação do ficheiro. Mas nos sistemas de ficheiros modernos (ext4, zfs, XFS, etc.) essa informação já está armazenada.
Os dados sobre a data de criação são registados num campo especial:
Existem dois métodos para ver esta informação: stat e debugfs. No entanto, o primeiro método não é adequado para utilizadores de todas as distribuições Linux. O segundo método é universal, mas não é tão fácil de usar. Vamos tratar de cada um deles separadamente.
O utilitário stat mostra informação detalhada sobre um ficheiro. Entre outras coisas, mostra a data de criação do ficheiro Linux. Para o executar no terminal, só precisa de especificar o caminho para o ficheiro. Por exemplo, vejamos as informações sobre a imagem pic_1.jpeg
armazenada no catálogo /home/root-user/Pictures
:
$ stat /home/root-user/Pictures/pic_1.jpeg
A informação necessária é registada na coluna Created (Criado). E utilizando a opção -c pode definir certas regras de formatação para a saída da informação, por exemplo, deixando apenas a coluna necessária:
$ stat -c '%w' /home/root-user/Pictures/pic_1.jpeg
Mas há uma pequena dificuldade. Em algumas distribuições Linux, este campo estará vazio quando se usa o utilitário stat.
A principal razão é que a saída é exibida no statx(2). A shell foi adicionada à biblioteca glibc na versão 2.28. Ou seja, o suporte para esta shell apareceu no conjunto de utilitários básicos de sistema GNU coreutils 8.31. Para verificar a versão, execute este comando:
$ stat --version
Consequentemente, o stat
só será capaz de produzir dados de criação de ficheiros se as condições específicas descritas acima estiverem presentes. Por exemplo, na distribuição Ubuntu 21.10 tudo funciona sem problemas, mas no Ubuntu 20.04 o campo estará vazio.
O utilitário DebugFS não tem restrições de versão. Ele sempre funcionará. Mas seu procedimento de uso é um pouco mais complicado. Isto porque, para ver a data de criação de um ficheiro através do debugfs, é necessário saber o seu número de inode e sistema de ficheiros. Para obter o inode, use o comando ls
com a opção -i
, especificando o caminho para o arquivo:
$ ls -i /home/root-user/scripts/main_script.txt
Para ver o sistema de ficheiros, o comando df
será útil:
$ df /home/root-user/scripts/main_script.txt
Agora você tem todos os dados necessários e pode passar para o utilitário debugfs. Tem de lhe passar a opção -R
, especificar o número de inode
e depois o nome do sistema de ficheiros:
$ sudo debugfs -R 'stat <28>' /dev/sda5
Depois disso, poderá encontrar no terminal o campo onde a data de criação está armazenada. No nosso caso, é crtime.
Isto completa as instruções.