Qual é a diferença entre a data de modificação e a data de modificação do inode?

1

Acabei de encontrar algumas informações interessantes para mim em man stat :

a, m, c, B
The time file was last accessed or modified, of when the inode was last changed, or the birth time of the inode.

Mas qual é a diferença entre a hora da última modificação do arquivo e a hora modificada do inode? Eu estou escrevendo um script bakup-bash que permite copiar apenas os últimos arquivos modificados de dois diretórios quase igualmente, então eu preciso saber qual o valor que eu prefiro usar:)

    
por JavaRunner 30.05.2014 / 08:24

1 resposta

7
Access: 2014-05-20 11:04:27.012146373 -0700
Modify: 2014-04-05 20:59:32.000000000 -0700
Change: 2014-05-20 11:04:22.405479507 -0700

Acesso : última vez que o conteúdo do arquivo foi examinado.
Modificar : última vez que o conteúdo do arquivo foi alterado.
Alterar : última vez que o inode do arquivo foi alterado.

O tempo alterar inclui coisas como modificar as permissões e a propriedade, enquanto o tempo modificar refere-se especificamente ao conteúdo dos arquivos.

Ou mais precisamente (de man 2 stat ):

The field st_atime is changed by file accesses, for example, by execve(2), mknod(2), pipe(2), utime(2) and read(2) (of more than zero bytes). Other routines, like mmap(2), may or may not update st_atime.

The field st_mtime is changed by file modifications, for example, by mknod(2), truncate(2), utime(2) and write(2) (of more than zero bytes). More‐ over, st_mtime of a directory is changed by the creation or deletion of files in that directory. The st_mtime field is not changed for changes in owner, group, hard link count, or mode.

The field st_ctime is changed by writing or by setting inode information (i.e., owner, group, link count, mode, etc.).

Curiosamente, a manipulação direta dos tempos de arquivo conta como modificação do inode, o que fará com que o ctime apresente a hora atual. Assim, você pode definir o ctime para o tempo atual , mas você não pode defini-lo para qualquer outra hora, como você pode os outros dois. Isso faz do ctime um canário útil para detectar quando o mtime do arquivo pode ter sido movido de volta.

Além disso, enquanto você pode mudar o inode sem alterar o conteúdo do arquivo (isto é, o ctime pode mudar sem a mudança mtime ), o reverso não é verdadeiro. Toda vez que você modificar o conteúdo do arquivo, você necessariamente também irá acabar com o ctime .

    
por 30.05.2014 / 08:37

Tags