¿Puede un archivo parecer modificado antes de ser creado? [duplicar]

9

¿Es posible tener un archivo que tenga una fecha de modificación anterior a la fecha de creación? ¿Qué acciones causarían este evento?

AlexanderRD
fuente
77
Crea el archivo. Retrocede el reloj. Modifica el archivo. Ponga el reloj de nuevo.
DavidPostill
@DavidPostill Tenga en cuenta que, al menos en Windows, cambiar la hora del sistema requiere privilegios administrativos, mientras que hay otras formas de crear tiempos de archivo divertidos que no lo hacen.
Ben N

Respuestas:

8

Considere un archivo .tar que se extrae. Por lo general, los archivos extraídos tendrán una última marca de tiempo de modificación asignada desde el contenido del archivo (que generalmente se encuentra en el pasado a menos que sea un viajero en el tiempo). En lo que respecta al sistema de archivos, estos archivos se acaban de crear.

También existen utilidades para cambiar el tiempo de modificación de los archivos existentes, en Linux, por ejemplo, este es el comando táctil .

Lekensteyn
fuente
Y para un solo archivo, cp -py las cosas que lo imitan como rcp -py scp -p, así como rsynccon -to -a, toman el modtime de la fuente.
dave_thompson_085
"tiempo de creación" es un término de Windows, no uno * nix. * nix tiene "tiempo de cambio" que es fácil de confundir con "tiempo de creación" pero no es lo mismo.
enchufe el
ext4 aparentemente almacena un "tiempo de nacimiento" que es similar (pero no el mismo) al "tiempo de creación" de Windows, pero no hay una buena manera de acceder a él. unix.stackexchange.com/a/50184/122182
plugwash
8

Si crea un archivo desde cero, obtiene un tiempo de creación de "ahora" y una fecha de modificación de "ahora". Ahora imagine copiar este archivo en otra unidad. Windows mantendrá el tiempo de modificación, pero el tiempo de creación de ese archivo se establecerá en el momento en que copió el archivo a esa unidad (es decir, la hora en que se creó el archivo en esa unidad). Simple como eso.

En realidad es correcto:

  • La última vez que se cambió el contenido del archivo se almacena en la hora de modificación.
  • La hora en que se creó el archivo en esta unidad se almacena en el tiempo de creación.
Ro-ee
fuente
Este comentario tiene más sentido porque demuestra un escenario muy probable cuando se producirá una discrepancia de fecha creada / modificada.
Shukri Adams
7

En Windows, es muy fácil configurar (falsificar, si lo desea) los tiempos creados y modificados de un archivo. No tiene que cambiar el reloj de la computadora; Ni siquiera necesita acceso de administrador local. Todo lo que necesita es acceso de escritura al archivo en cuestión.

Para establecer el tiempo de creación de un archivo con PowerShell usando SetCreationTime:

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

Para configurar la hora de la última modificación usando SetLastWriteTime:

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

En Linux, puede cambiar fácilmente la hora de la última modificación de un archivo con el -dindicador de touch, como se muestra en esta respuesta a Ask Ubuntu . Realmente no existe una noción de una fecha de creación para los archivos en los sistemas de archivos de Linux ( más información en Unix y Linux ).

Ben N
fuente
3

Si. En Windows, realice un cambio en el archivo y guárdelo. Ahora copie el archivo. Si observa las propiedades de la copia, verá que tiene una fecha de modificación anterior.

David
fuente
1

Lo más importante a tener en cuenta aquí es que el tiempo de modificación del archivo no es realmente especial: se almacena como cualquier otro dato. No hay manera de saber cuándo se han hecho la última escriben o leen de.

A partir de aquí, podemos ver que siempre es posible (excluyendo medios de escritura única como un CD) ir y modificar directamente los bits en una unidad que almacena la última hora modificada, o incluso la hora de creación.

Más prácticamente, esto también se puede hacer desde sistemas operativos comunes, como han señalado otras respuestas. En Windows, esto es proporcionado por la SetFileTimefunción WinAPI , y puede hacerlo con utimeLinux. Herramientas como touchconstruir sobre estas API.

El uso legítimo más común para estas API es preservar el tiempo de modificación, por ejemplo, al copiar archivos, extraerlos de archivos, etc.

Beto
fuente
0

En mi experiencia, ha sido cuando una o más computadoras se han utilizado para modificar el archivo y una de ellas tiene la hora del sistema incorrecta. Las tres causas más comunes para que el tiempo del sistema sea incorrecto, sin ningún orden en particular, son:

  1. No todas las computadoras están configuradas para cambiar automáticamente al horario de verano.
  2. La gente ha cambiado "accidentalmente" la hora del sistema en una computadora.
  3. La gente ha cambiado "deliberadamente" la hora del sistema en una computadora como una broma.
Tai Paul
fuente