¿Por qué la vista previa cambia el ctime de un pdf y cómo puedo desactivarlo?

5

Cuando abro un archivo en Vista previa, la vista previa actualiza el ctime del archivo. Sin embargo, esto parece ocurrir solo una vez, y por lo que puedo decir, nada más que el tiempo de uso está cambiando. Esto es muy frustrante porque se mete con los scripts que están comprobando la modificación del archivo, incluso cuando no se está realizando ninguna modificación.

A continuación hay un ejemplo de lo que estoy viendo. Creo un nuevo archivo pdf llamado test.pdf, todo se ve bien. Luego lo abro con Vista previa, no hago nada y cierro la vista previa. Ahora el archivo tiene un acceso actualizado y hora de cambio, pero no modificado. Por lo que puedo decir, todo lo demás sobre el archivo es idéntico, es como si se hubiera tocado el ctime sin ninguna razón. Este efecto parece estar almacenado en caché en algún sentido, porque si lo abro de nuevo, solo se actualiza el tiempo de acceso.

$ stat -x test.pdf 
  File: "test.pdf"
  Size: 47737        FileType: Regular File
  Mode: (0644/-rw-r--r--)         Uid: ~~~  Gid: ~~~
Device: 1,3   Inode: 3220039    Links: 1
Access: Wed Jun 17 11:02:24 2015
Modify: Wed Jun 17 11:02:24 2015
Change: Wed Jun 17 11:02:24 2015
$ open test.pdf 
$ stat -x test.pdf 
  File: "test.pdf"
  Size: 47737        FileType: Regular File
  Mode: (0644/-rw-r--r--)         Uid: ~~~  Gid: ~~~
Device: 1,3   Inode: 3220039    Links: 1
Access: Wed Jun 17 11:02:39 2015
Modify: Wed Jun 17 11:02:24 2015
Change: Wed Jun 17 11:02:39 2015
$ open test.pdf 
$ stat -x test.pdf 
  File: "test.pdf"
  Size: 47737        FileType: Regular File
  Mode: (0644/-rw-r--r--)         Uid: ~~~  Gid: ~~~
Device: 1,3   Inode: 3220039    Links: 1
Access: Wed Jun 17 11:02:53 2015
Modify: Wed Jun 17 11:02:24 2015
Change: Wed Jun 17 11:02:39 2015

¿Hay alguna forma de evitar que la vista previa haga esto, aparte de la copia ingenua del archivo primero, y simplemente mirar la copia?

    
pregunta Erik 17.06.2015 - 20:10

2 respuestas

7

El sistema de archivos y los metadatos pueden cambiar cuando la vista previa tiene acceso de escritura al archivo. El motivo exacto es probablemente complicado, pero puede evitarlo eliminando el acceso de escritura ( chmod a-w test.pdf ) y luego usando la vista previa en el archivo. Tenga en cuenta que el chmod también actualiza el ctime.

Mi conjetura es que los campos de metadatos como kMDItemUsedDates y kMDItemLastUsedDate son la razón de la actualización de ctime. Puede usar mdls test.pdf para verificar esos detalles antes y después de sus pruebas.

    
respondido por el bmike 17.06.2015 - 22:19
0

También he notado esto con imágenes. Cuando abro uno en Vista previa, hago cambios en él y, "forzar el cierre", los cambios persisten aunque nunca los guardé. Creo que esto sucede porque Vista previa guarda automáticamente tu trabajo al sobrescribir el archivo original. La mayoría de los usuarios no notan esto porque cuando cierran el programa normalmente sin guardar, revierte los cambios y vuelve a guardar el archivo.

Creo que hay dos razones por las que hace esto, la primera es que dado que las Mac manejan los apagados y los reinicios muy bien (es decir, pueden mantener todo su trabajo abierto y cargarlo de regreso a donde lo dejaron), luego todo Apple Es probable que los programas creados deban guardarse automáticamente para asegurarse de que las paradas se realicen de la mejor manera posible sin perder nada de nuestro trabajo.

La otra razón (en mi opinión) es la forma en que las Mac muestran vistas previas del contenido de los archivos en sus iconos. Por lo general, cada vez que realiza cambios en un archivo, el icono se actualiza automáticamente para reflejar los cambios realizados. Esto es particularmente notable con imágenes. Creo (y esto es solo una suposición descabellada) que la forma en que la Vista previa realiza la actualización del ícono es guardando el archivo periódicamente. Al hacerlo, el Finder puede gestionar las actualizaciones de iconos necesarias por sí solo sin necesidad de una integración especial con la vista previa.

¿Por qué es necesario guardar el archivo inmediatamente al abrirlo aunque no se hayan realizado cambios? No lo sé con seguridad, pero creo que podría tener algo que ver con la forma en que la vista previa maneja los archivos en la memoria: he notado que cuando realizas muchos cambios en una imagen de alta resolución en la vista previa, en realidad pierdes una notable cantidad de espacio libre en su disco. Esto significa que la vista previa debe almacenar parte de su memoria en el disco en lugar de RAM.

Sólo un pensamiento. No estoy seguro de si es correcto o no.

    
respondido por el Vladimir 24.06.2015 - 04:29

Lea otras preguntas en las etiquetas