Por que o tempo de criação do armazenamento do sistema de arquivos não é unix? [duplicado]

2

Existe algum motivo histórico? Stat armazena a última vez acessada, a última hora modificada e a última hora alterada, mas não o tempo de criação! Isso não é informação importante?

Não consigo entender por que os desenvolvedores deixariam de fora uma informação tão importante. Alguns sistemas de arquivos armazenam os dados, como apontado nesta pergunta . Mas claramente a importância desta informação foi subestimada. Por que isso acontece?

Nota:

stat -c %W <filename>

Retorna 0 no meu sistema (fedora 22).

    
por 0aslam0 09.03.2016 / 15:01

2 respostas

3

A resposta histórica é claro que originalmente não armazenou o tempo de criação, e ninguém se sentiu obrigado a adicionar este novo recurso.

Há uma boa razão para não armazenar o tempo de criação, que é uma noção muito mal definida. Se o sistema mantivesse o controle de algum tempo e o chamasse de “tempo de criação”, haveria muitos casos em que este não seria um momento útil.

Muitos aplicativos salvam um arquivo primeiro gravando em um arquivo temporário e renomeando o arquivo para substituir o antigo. Essa abordagem é preferível a sobrescrever o arquivo porque, se o aplicativo ou o sistema travarem enquanto grava o arquivo, isso deixará apenas um arquivo temporário, enquanto o método de sobrescrever deixa um arquivo quebrado no lugar. Mas essa abordagem significa que, se você definir o horário de criação de um arquivo como a data em que o arquivo foi realmente criado, a maioria dos arquivos de dados teria um tempo de criação igual ao tempo de modificação ou apenas uma fração de segundo no passado. Então o tempo de criação não forneceria nenhuma informação.

Isso pode ser alterado exigindo que o aplicativo declare de alguma forma que o novo arquivo é, na verdade, uma nova versão do arquivo antigo e, portanto, deve herdar seu tempo de criação. Mas isso exigiria muita complexidade extra, ao contrário dos timestamps tradicionais (modificação de conteúdo, acesso e mudança de inode) que podem ser atualizados automaticamente (em cada gravação, em cada leitura, em cada alteração de metadados).

Existem outros casos em que o tempo de criação é discutível. Quando você copia um arquivo com metadados preservados ( cp -p , rsync -a ,…), você está criando a cópia ou copiando um arquivo, incluindo o tempo de criação? Quando você restaura um arquivo do backup, o tempo de criação deve ser restaurado ou deve ser o tempo da restauração?

Se você quiser que o tempo de criação de um arquivo seja significativo, insira-o sob o controle de versão. Em seguida, você pode definir o horário de criação como o horário da primeira confirmação que inclui o arquivo, e essas informações serão registradas e preservadas.

    
por 10.03.2016 / 03:01
2

Sistemas de arquivos modernos armazenam o tempo de criação do objeto de arquivo. Uma razão pela qual isso não foi feito anteriormente foi provavelmente não haver consenso sobre o tempo de criação de um arquivo, ou seja, quando o objeto de arquivo (inode) foi criado ou o conteúdo do arquivo (dados) e o que fazer quando um arquivo é restaurado a partir do backup.

    
por 09.03.2016 / 15:10