Sistema de archivos de Windows 7: pasmado - Eliminar y volver a crear el archivo: ¡el tiempo de creación no cambia! ¿Por qué y cómo arreglarlo?

3

Necesito actualizar el tiempo de creación de un archivo falso a 'ahora', eliminándolo y volviéndolo a crear . ¡Extrañamente, parece que el archivo recién creado hereda el tiempo de creación del archivo original!

Déjame demostrarte:

> touch a.txt       //create a new file
> dir /T:C          //creation time
02/27/2013  02:04 PM                 0 a.txt

> dir /T:W          //modification time
02/27/2013  02:04 PM                 0 a.txt

//wait a bit...
> touch a.txt       //update modified-time
> dir /T:C
02/27/2013  02:04 PM                 0 a.txt

> dir /T:W          //mod-time changed, as expected
02/27/2013  02:05 PM                 0 a.txt

> del a.txt
> touch a.txt       //recreate file
> dir /T:C          //same original ctime !!
02/27/2013  02:04 PM                 0 a.txt

> dir /T:W          //the actual time the 2nd file was created
02/27/2013  02:06 PM                 0 a.txt

> del a.txt
> touch b.txt       //ok, create a file with a different name
> dir /T:C          //ctime as expected
02/27/2013  02:07 PM                 0 b.txt

> mv b.txt a.txt
> dir /T:C          //again, ctime of original file!
02/27/2013  02:04 PM                 0 a.txt

> del a.txt
> touch c.txt       //create a file with a different name, again
> dir /T:C          //ctime as expected
02/27/2013  02:08 PM                 0 c.txt

> cp c.txt a.txt    //this time copy it...
> dir /T:C          //ctime of a.txt is that of original file!
02/27/2013  02:04 PM                 0 a.txt
02/27/2013  02:08 PM                 0 c.txt

//wait longer...

> del *
> touch d.txt
> dir /T:C
02/27/2013  02:22 PM                 0 d.txt

> cp d.txt a.txt
> dir /T:C          //lo and behold, the ctime has changed.
02/27/2013  02:22 PM                 0 a.txt
02/27/2013  02:22 PM                 0 d.txt

Esto concluye mi demostración. Surgen dos preguntas:

WTF?!

  1. ^^^ Lo que dijo.

  2. ¿Cómo puedo arreglarlo?

Ok, déjame expandirme en estos:

  1. ¿Alguien sabe qué mecanismos internos del sistema operativo Windows / NTFS están en juego? Parece que tiene lugar el almacenamiento en caché de metadatos de un archivo, y la invalidación de la memoria caché está sujeta al tiempo.

  2. ¿Alguna sugerencia sobre cómo puedo obtener un archivo nuevo con el mismo nombre que el original y actualizado ctime? Cualquier sugerencia es bienvenida, ya sean scripts por lotes, hacks de registro, programáticos o lo que sea que tenga.

Cristi Diaconescu
fuente
Esto se ha hecho antes lo que parece: superuser.com/questions/71962/...
Ramhound
Gracias. Sin embargo, eso responde al cómo (tipo de), pero no al por qué .
Cristi Diaconescu
Tiene que ver con el hecho de que las fechas no se actualizan de inmediato por diseño para evitar menos ciclos de escritura en el dispositivo de almacenamiento. Cuál es la razón exacta por la que te señalé la pregunta que hice.
Ramhound
3
Raymond Chen explica esto en su blog: blogs.msdn.com/b/oldnewthing/archive/2005/07/15/439261.aspx
Kryten

Respuestas:

0

Use atime, no ctime. El tiempo de acceso es efectivamente el momento de la creación, ya que no se actualiza en el acceso más

psimons
fuente
Resulta que la locura tiene un nombre. Se llama tunelización .
psimons
¿Por qué se vincula a un artículo de Wikipedia que dice "La precisión objetiva de este artículo está en disputa"? En cualquier caso, no responde la pregunta.
DavidPostill