Um arquivo pode parecer modificado antes de ser criado?

Um arquivo pode parecer modificado antes de ser criado?

É possível ter um arquivo com data de modificação anterior à data de criação? Que ações fariam com que esse evento ocorresse?

Responder1

Se você criar um arquivo do zero, ele terá um horário de criação "agora" e uma data de modificação "agora". Agora imagine copiar este arquivo para outra unidade. O Windows manterá a hora da modificação, mas a hora de criação desse arquivo será definida como a hora em que você copiou o arquivo para aquela unidade (ou seja, a hora em que o arquivo foi criado emquedirigir). Simples assim.

Na verdade está correto:

  • A última vez que o conteúdo do arquivo foi alterado é armazenada na hora da modificação.
  • A hora em que o arquivo foi criado nesta mesma unidade é armazenada na hora de criação.

Responder2

No Windows, é muito fácil definir (falsificar, se preferir) os horários de criação e modificação de um arquivo. Você não precisa alterar o relógio do computador; você nem precisa de acesso de administrador local. Tudo que você precisa é de acesso de gravação ao arquivo em questão.

Para definir o horário de criação de um arquivo com o PowerShell usandoSetCreationTime:

[System.IO.File]::SetCreationTime("C:\path\to\file.ext", (Get-Date "8/8/2088"))

Para definir a hora da última modificação usandoSetLastWriteTime:

[System.IO.File]::SetLastWriteTime("C:\path\to\file.ext", (Get-Date "7/4/1776"))

No Linux, você pode alterar facilmente a hora da última modificação de um arquivo com o -dsinalizador touch, conforme mostrado emesta resposta do Pergunte ao Ubuntu. Não existe realmente uma noção de data de criação para arquivos em sistemas de arquivos Linux (leitura adicional em Unix e Linux).

Responder3

Considere um arquivo .tar extraído. Normalmente, os arquivos extraídos terão um carimbo de data/hora da última modificação atribuído a partir do conteúdo do arquivo (que normalmente está no passado, a menos que você seja um viajante do tempo). No que diz respeito ao sistema de arquivos, esses arquivos acabaram de ser criados.

Também existem utilitários para alterar o horário de modificação de arquivos existentes, no Linux por exemplo este é otocarcomando.

Responder4

A coisa mais importante a ser observada aqui é que o horário de modificação do arquivo não é realmente especial - ele é armazenado como qualquer outro dado. Não há como saber quando os dados foramna verdadeúltimo escrito ou lido.

A partir daqui, podemos ver que é sempre possível (excluindo mídia de gravação única como um CD) modificar diretamente os bits em uma unidade que armazena a hora da última modificação, ou mesmo a hora de criação.

De forma mais prática, isso também é possível em sistemas operacionais comuns, como observaram outras respostas. No Windows, isso é fornecido pelo WinAPISetFileTimefunção, e você pode fazer isso comutimeno Linux. Ferramentas como touchconstruir sobre essas APIs.

O uso legítimo mais comum para essas APIs é preservar o tempo de modificação, por exemplo, ao copiar arquivos, extraí-los de arquivos, etc.

informação relacionada