Determina a precisão do registro de data e hora do sistema de arquivos

6

A precisão do registro de data e hora do arquivo é limitada a um segundo para o EXT3, um microssegundo para o UFS e um nanossegundo para o EXT4 (pelo menos de acordo com a experiência). Existe alguma maneira de determinar isso com base apenas nas informações do sistema de arquivos?

As alternativas hacky que eu posso imaginar são limitar todos os meus testes unitários a segundos (o que eu faço agora), ou touch um monte de arquivos e verificar quais dígitos são zero em stat -c %x .

    
por l0b0 19.04.2011 / 09:01

2 respostas

6

Tanto quanto eu sei, não há lugar onde esta informação é armazenada. Está codificado no sistema de arquivos. No entanto, você pode fazer manualmente uma lista de sistemas de arquivos e a precisão correspondente. Eu usaria uma instrução case para testar o ID do sistema de arquivos em sua lista de sistemas de arquivos. Você pode fazer o padrão 1, pois há poucos exemplos em que a precisão é menor que 1 segundo.

As versões mais antigas do FAT e as versões atuais do zip usam a precisão do registro de data e hora de 2 segundos do que li on-line. No entanto, sugiro que você verifique isso.

Você pode obter o id do sistema de arquivos de um arquivo com o seguinte comando.

stat -f --format="%t" $file
    
por 06.05.2011 / 19:40
3

Normalmente, você pode usar statvfs ou pathconf , mas eles não parecem apoiar nenhuma maneira de descobrir essa informação.

Aparentemente, esse recurso é sendo discutido para um futuro padrão POSIX

we will also file some aardvarks for a pathconf enhancement to return the granularity of timestamps on a per path basis.

Infelizmente, não vejo nenhuma maneira clara de fazer isso hoje, nem mesmo de uma maneira específica do sistema operacional.

Qualquer abordagem que tente construir uma lista de sistemas de arquivos e se ela suporta resolução de sub-segundo é perigosa. Por exemplo, ext4 parece suportar resolução de nanossegundos se os inodes tiverem 256 bytes, mas não se forem 128 bytes.

A compilação de uma lista abrangente e precisa seria difícil, pode exigir acesso root e pode mudar amanhã. O que parece mais difícil do que apenas correr stat algumas vezes para mim.

    
por 19.04.2011 / 09:26