Estou tentando entender com precisão quando o timestamp ctime de um arquivo é alterado. Em muitos lugares (por exemplo, na resposta aceita aqui ), sugere-se que qualquer alteração nos atributos do arquivo também mude o ctime. No entanto, isso parece não ser verdade, pelo menos no meu Ubuntu 12.04 (sim, eu sei, um pouco antigo ...):
cat file.txt > /dev/null
altera o atime, portanto, altera os atributos do arquivo (no inode do arquivo), mas não altera o ctime.
Outras fontes (por exemplo, aqui e aqui ) sugerem que apenas algumas operações nos atributos do arquivo realmente alteram o ctime, mas uma lista precisa não é fornecida.
Onde posso encontrar uma referência precisa para quais operações alteram o ctime?
filesystem
VeryHardCoder
fonte
fonte
cat
, você o examinoutouch
?Respostas:
Existem três carimbos de hora nos sistemas Unix:
atime
: Tempo de acessoEste registro de data e hora indica quando o arquivo foi acessado pela última vez, incluindo apenas o acesso de leitura.
ctime
: Mudar horaEste registro de data e hora indica quando os atributos do arquivo (informações do inode) foram alterados na última vez. Isso inclui, por exemplo, propriedade e permissões, mas uma alteração no conteúdo também aciona uma atualização desse carimbo de data / hora.
Observe que as alterações no atime parecem ser uma exceção , pois não acionam uma atualização do ctime. Provavelmente, isso ocorre porque um acesso de leitura simples, suficiente para acionar uma atualização do atime, não faz alterações relevantes nos atributos do arquivo. E um dos principais objetivos do ctime é ajudar as ferramentas de backup a determinar se um arquivo foi alterado. O atime é uma informação irrelevante para essas ferramentas e a atualização de um backup apenas para atualizar um atime alterado porque alguém leu o arquivo seria inútil.
Não tenho certeza, mas algumas pessoas pensam que esse comportamento (alterações no atime não atualizam o ctime) é apenas devido às opções de montagem (comorelatime
) do sistema de arquivos subjacente que armazena em cache e atrasa as atualizações do atime no inode por motivos de desempenho na memória e os aplica somente aos inodes reais no disco (acionando uma atualização do ctime) sob determinadas condições.O @kos tentou e, aparentemente, mesmo ao montar um FS com a opção `strictatime``, o ctime parece nunca ser atualizado se o atime mudar.
mtime
: Hora da modificaçãoEsse registro de data e hora indica quando o conteúdo do arquivo foi modificado pela última vez.
Portanto, um acesso de leitura simples usando
cat FILENAME
apenas altera o atime , mas não o ctime, pois nenhum atributo do arquivo foi modificado. O atime alterado não conta.fonte