Linux, Unix, Windows… O tempo de acesso / modificação é relativo à hora do sistema?

2

Eu pesquisei, mas não consegui encontrar a terminologia correta.

Por exemplo, se hoje era sexta-feira e um arquivo foi modificado na quarta-feira, quando eu altero a hora do sistema para sábado, o mtime do arquivo permanece na quarta-feira ou ele muda para a quinta-feira?

Como isso se aplica a outros sistemas operacionais?

    
por aomimezura 20.06.2013 / 22:03

2 respostas

2

A hora do sistema é um relógio mantido pelo kernel. Quando você atualiza um arquivo, o mtime atual do arquivo é atualizado para a hora atual do kernel. Filés são em UTC, como segundos da época (a partir de 1 de janeiro de 1970). (isso não é exatamente como o Windows faz - isso é Linux / UNIX)

Então você pode mexer com a hora do sistema e defini-lo de trás para frente. Você pode obter datas futuras em arquivos, --- alguns sistemas de arquivos mais antigos não "curtem" isso. Assim, alterar o relógio do sistema não se altera em nenhum horário de filmagem existente. Apenas usando comandos que atualizam tempos de filmagem como touch ou realmente alteram os metadados do arquivo ou arquivo, faça isso.

Você também pode obter datas futuras em arquivos abusando de chamadas do sistema utime() e comandos como touch .

Este é um sistema de 32 bits e o comando touch causou problemas usando uma data além da aritmética de data de 32 bits. O número de segundos UTC foi muito grande.

jmcnama@SNEDAP03 ~> ls -l t.lis
-rw-r--r--   1 jmcnama  other         68 Jun  4 10:17 t.lis


jmcnama@SNEDAP03 ~> touch -t 2099010100 t.lis
jmcnama@SNEDAP03 ~> ls -l t.lis
-rw-r--r--   1 jmcnama  other         68 Mar  1  2028 t.lis
    
por 20.06.2013 / 22:44
1

Por favor, forneça mais detalhes sobre a plataforma que você está usando, especificamente o sistema operacional e o sistema de arquivos.

Com relação ao Linux, é mais provável que ele seja armazenado como timestamp UTC (veja a resposta de Jim).

No Windows, se você estiver usando o NTFS, encontrará um comportamento semelhante ao Linux, pois o registro de data e hora é baseado no UTC. Mas eles usam épocas epoch diferentes. Quando armazenado como um inteiro no Linux, 0 significa 1/1/1970 . Mas no Windows, 0 significa 1/1/1601 .

Se você estiver usando FAT ou FAT32 no Windows, tenha cuidado para que os tempos de arquivo não sejam baseados em UTC, mas no fuso horário local do computador que o registrou. Isso significa que pode haver ambiguidade nas datas de transição do horário de verão e, se você alterar seu fuso horário, ou levar arquivos para um computador em um fuso horário diferente (talvez por meio de uma chave USB formatada em FAT32, por exemplo) interpretado como se estivessem em esse fuso horário .

Você pode ler mais sobre os específicos do Windows aqui .

De qualquer forma, o tique-taque do relógio ou o ajuste manual do relógio não afetará os registros de data e hora dos arquivos gravados. Isso afetará somente os timestamps de novos arquivos.

    
por 20.06.2013 / 23:06