Formas de pagamento Abuse

Como ver a data de criação de um ficheiro no Linux

22.04.2022, 18:05

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.

Data de criação do ficheiro

A norma POSIX especifica apenas 3 tipos de marcas de tempo que um sistema de ficheiros deve armazenar:

  • atime - a hora do último acesso ao ficheiro.
  • mtime - hora da última modificação do conteúdo.
  • ctime - hora da última modificação dos direitos de acesso ou do proprietário.

É 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:

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

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.

Usando o Stat

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

Como ver a data de criação de um ficheiro no Linux

Mas há uma pequena dificuldade. Em algumas distribuições Linux, este campo estará vazio quando se usa o utilitário stat.

Como ver a data de criação de um ficheiro no Linux

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

Como ver a data de criação de um ficheiro no Linux

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.

Usando o DebugFS

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

Como ver a data de criação de um ficheiro no Linux

Para ver o sistema de ficheiros, o comando df será útil:

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

Como ver a data de criação de um ficheiro no Linux

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

Como ver a data de criação de um ficheiro no Linux

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.