O que conta como uma modificação ou alteração de arquivo?

16

A renomeação afeta o arquivo modificar ou acessar o tempo? Existe uma lista em algum lugar do que muda em que horários?

Gilles 'SO- parar de ser mau'
fonte

Respostas:

9

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).

Zelda
fonte
Copiar e colar um arquivo altera o tempo de "modificação" no novo arquivo? Usar Ctrl + X e colar altera o tempo de "alteração"?
1
Uma cópia cria um novo arquivo com Modificar, Acessar e Alterar com um novo valor (todos iguais). Colar algo em um editor (e poupança) atualiza todos os três (Mudança com um timestamp mais tarde do que os outros dois, é claro somente depois de salvar)
Zelda
Eu quis dizer usando CTRL + x no arquivo e CTRL + v em outro lugar.
Isso está usando as ferramentas de linha de comando cpe mv, e vipara 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.
Zelda
O ex Nautilus não atualizar acessar e modificar usando Ctrl + X, em seguida, Ctrl + V, única mudança é diferente, comomv
Zelda
9

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 atimeopção de montagem restaura as atualizações do atime, enquanto a noatimeopçã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 -pou 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).

Gilles 'SO- parar de ser mau'
fonte
1

Uma observação empírica adicional não mencionada pelas outras respostas:

Abrir o arquivo para gravação O_TRUNCaltera o mtime, mesmo que o arquivo estivesse originalmente vazio.

Este parece ser o caso pelo menos no ext3 no Linux 3.10.

Arseniy Alekseyev
fonte