A renomeação afeta o arquivo modificar ou acessar o tempo? Existe uma lista em algum lugar do que muda em que horários?
A renomeação afeta o arquivo modificar ou acessar o tempo? Existe uma lista em algum lugar do que muda em que horários?
Respostas:
A renomeação atualiza o horário da alteração:
$ mkdir tmp
$ cd tmp
$ echo abc > a
$ stat a
File: `a'
Size: 4 Blocks: 8 IO Block: 4096 regular file
Device: 26h/38d Inode: 5038682 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000 / zelda Gid: ( 1000/ zelda)
Access: 2013-12-12 07:06:58.981107444 +0100
Modify: 2013-12-12 07:06:58.981107444 +0100
Change: 2013-12-12 07:06:58.981107444 +0100
Birth: -
$ mv a b
$ stat b
File: `b'
Size: 4 Blocks: 8 IO Block: 4096 regular file
Device: 26h/38d Inode: 5038682 Links: 1
Access: (0664/-rw-rw-r--) Uid: ( 1000/ zelda) Gid: ( 1000/ zelda)
Access: 2013-12-12 07:06:58.981107444 +0100
Modify: 2013-12-12 07:06:58.981107444 +0100
Change: 2013-12-12 07:07:14.893238472 +0100
Birth: -
O tempo de acesso é atualizado ao ler o conteúdo de um arquivo. Modifique ao atualizar o arquivo (a abertura para modificação não é suficiente para alterar o tempo de modificação).
cp
e mv
, e vi
para edição. Outros editores ou a área de trabalho podem lidar com a tarefa de maneira diferente e ter mais registros de data e hora atualizados.
mv
Uma modificação que afeta o mtime do arquivo é uma alteração dos dados do arquivo: uma gravação de uma quantidade diferente de zero de bytes ou um truncamento que acaba modificando o arquivo. Criar um arquivo define seu mtime para a data atual também. A simples abertura de um arquivo para gravação não afeta o mtime, supondo que o arquivo não seja criado ou truncado.
A leitura de um arquivo (se um número diferente de zero de bytes for lido) ou a execução de um arquivo definirá seu horário no horário atual. Simplesmente abrir um arquivo para leitura nunca afeta o atime. No Linux, isso agora está desativado por padrão na maioria das circunstâncias; a atime
opção de montagem restaura as atualizações do atime, enquanto a noatime
opção de montagem as desativa completamente.
Os programas podem alterar o mtime e o atime de um arquivo; o comando básico para fazer isso é touch
. Alguns programas de cópia de arquivo definem a cópia para o mesmo mtime que o original, por exemplo cp -p
ou rsync -t
.
Uma alteração que afeta o ctime do arquivo é uma alteração dos metadados do arquivo: permissões, proprietário, horários, contagem de links etc. A renomeação de um arquivo também atualiza o ctime. As alterações nos dados do arquivo também afetam o ctime, mas a leitura de um arquivo não altera o ctime, mesmo que ele altere o atime. É impossível alterar o ctime de qualquer outra maneira que não seja configurá-lo para a hora atual (até o root está restrito, mas o root pode definir indiretamente o ctime alterando primeiro a hora do sistema ou acessando a partição que contém o sistema de arquivos diretamente).
Uma observação empírica adicional não mencionada pelas outras respostas:
Abrir o arquivo para gravação O_TRUNC
altera o mtime, mesmo que o arquivo estivesse originalmente vazio.
Este parece ser o caso pelo menos no ext3 no Linux 3.10.