Os carimbos de data / hora são registros dos horários em que as ações são executadas nos arquivos. Um carimbo de data / hora é útil porque mantém registros de quando um arquivo foi acessado, modificado ou adicionado. Os arquivos do Linux têm 3 carimbos de data / hora registrados pelo computador: 

  • Data e hora de acesso (atime): indica a última vez que um arquivo foi acessado.
  • Carimbo de data / hora modificado (mtime): que é a última vez que o conteúdo de um arquivo foi modificado.
  • Change timestamp (ctime): refere-se à última vez que alguns metadados relacionados ao arquivo foram alterados.

No Linux, um carimbo de data / hora é realmente armazenado como um número de segundos em vez de uma data e hora. Esse número de segundos refere-se à quantidade de tempo desde 00:00:00 em 1 de janeiro de 1970, que é a hora do Unix Epoch. No entanto, quando um usuário deseja que um carimbo de data e hora seja exibido, o Linux o traduz para um formato legível por humanos, portanto, é exibido como uma data e hora. Os usuários podem visualizar os carimbos de data / hora usando o comando ls ou o comando stat.

mtime:

O carimbo de data / hora modificado (mtime) indica a última vez que o conteúdo de um arquivo foi modificado. Por exemplo, se novos conteúdos foram incluídos, excluídos ou substituídos em um arquivo, o carimbo de data / hora modificado é alterado. Para visualizar o carimbo de data / hora modificado, podemos simplesmente usar o comando ls com a opção -l.

Syntax:
ls -l [filename]

ctime:

Ao contrário do mtime, que está relacionado apenas ao conteúdo de um arquivo, o timestamp alterado indica a última vez que alguns metadados de um arquivo foram alterados. Por exemplo, se as configurações de permissão de um arquivo foram modificadas, mtime irá indicá-lo. Para ver o carimbo de data / hora alterado, podemos usar a opção -lc com o comando ls da seguinte maneira:

Syntax:
ls -lc [filename]

um tempo:

O carimbo de data / hora de acesso (atime) refere-se à última vez em que um arquivo foi lido por um usuário. Ou seja, um usuário exibia o conteúdo de um arquivo usando qualquer programa adequado, mas não necessariamente modificava nada. Para visualizar um carimbo de data / hora de acesso usando o comando ls, usamos a opção -lu seguida do nome do arquivo.

Syntax:
ls -lu [filename]

comando stat:

O comando stat pode ser usado para ver todos os carimbos de data / hora de um arquivo simultaneamente.

Syntax:
stat [filename]

Tabela de comparação

A tabela abaixo resume a diferença entre os três carimbos de data / hora que mencionamos:

 O conteúdo do arquivo foi modificadoMetadados são modificados Arquivo acessado sem modificaçãoComando para usar
mtimeAlterarSem mudançaSem mudançals -l ou stat
ctimeAlterarAlterarSem mudançals -cl ou stat
um tempoAlterarSem mudançaAlterarls -ul ou stat

Para explicar melhor o conceito, examinaremos um arquivo chamado test.txt, as seguintes alterações foram feitas no arquivo:

Criando o arquivo

O arquivo foi criado às 14h04 do dia 25/03/2021 usando o comando nano. Também podemos usar o comando touch ou qualquer editor de texto. Inicialmente, adicionamos 1 linha ao arquivo

Comando para criar arquivo:

nano test.txt

Timestamps de arquivo - mtime, ctime e atime no Linux

Inicialmente, todos os carimbos de data / hora mostram a hora em que o arquivo foi criado. A imagem abaixo mostra um exemplo de uso do comando stat para visualizar os 3 carimbos de data / hora. Nesta imagem, são mostrados os carimbos de data / hora iniciais, que mostram a hora em que o arquivo foi criado. O número +004 à direita de cada carimbo de data / hora é conhecido como deslocamento de fuso horário, que indica que o fuso horário está +004 horas à frente do UTC. A data e a hora exibidas são convertidas de UTC para o fuso horário local quando exibidas para o usuário. Também podemos notar que o comando stat é altamente exato ao mostrar os segundos em um carimbo de data / hora.

Comando:

stat test.txt

Timestamps de arquivo - mtime, ctime e atime no Linux

Como alternativa, o comando ls pode ser usado para visualizar cada carimbo de data / hora individualmente da seguinte maneira:

Comando:

mtime: ls -l test.txt
ctime: ls -cl test.txt
atime: ls -ul test.txt

Nas etapas a seguir, faremos algumas alterações no arquivo e observaremos a alteração nos carimbos de data / hora usando o comando stat. O comando ls também pode ser usado.

Modificando o arquivo

O arquivo foi acessado e uma nova linha foi adicionada a ele às 14:22 em 25/03/2021 usando o editor de texto nano (qualquer editor de texto pode ser usado).

Comando:

nano test.txt

Timestamps de arquivo - mtime, ctime e atime no Linux

Usando o comando stat, podemos ver que todos os 3 carimbos de data / hora foram alterados para 14:22. 

Comando:

stat test.txt

Timestamps de arquivo - mtime, ctime e atime no Linux

Alterando Metadados

As permissões do arquivo foram alteradas às 14:36 ​​em 25/3/2021 usando o comando chmod.

Comando:

chmod 777 test.txt

Percebemos que depois de alterar as permissões, ctime e atime mudaram para 14:36. Este não é o caso com mtime, pois ele só muda quando o conteúdo dentro do arquivo é modificado. Portanto, mtime ainda está em 14:22.

Comando:

stat test.txt

Timestamps de arquivo - mtime, ctime e atime no Linux

Abrindo o arquivo sem fazer alterações

O arquivo foi aberto no editor de texto nano, mas nenhuma alteração foi feita às 14h55 de 25/03/2021.

Comando:

nano test.txt

A partir da saída do comando stat, podemos observar que o único carimbo de data / hora que mudou para 14:55 é o carimbo de data / hora de acesso. Isso ocorre porque nenhum dado foi alterado. Portanto, ctime permanece às 14:36 ​​enquanto mtime permanece às 14:22.

Comando:

stat test.txt

Timestamps de arquivo - mtime, ctime e atime no Linux