Timestamps de arquivo - mtime, ctime e atime no Linux
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 modificado | Metadados são modificados | Arquivo acessado sem modificação | Comando para usar | |
---|---|---|---|---|
mtime | Alterar | Sem mudança | Sem mudança | ls -l ou stat |
ctime | Alterar | Alterar | Sem mudança | ls -cl ou stat |
um tempo | Alterar | Sem mudança | Alterar | ls -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
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
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
Usando o comando stat, podemos ver que todos os 3 carimbos de data / hora foram alterados para 14:22.
Comando:
stat test.txt
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
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
As postagens do blog Acervo Lima te ajudaram? Nos ajude a manter o blog no ar!
Faça uma doação para manter o blog funcionando.
70% das doações são no valor de R$ 5,00...
Diógenes Lima da Silva