Perché l'anteprima cambia il ctime di un pdf e come posso disabilitarlo?


5

Quando apro un file in Anteprima, l'anteprima aggiorna il ctime del file. Ciò sembra accadere solo una volta, tuttavia, e per quanto posso dire, non cambia nulla al di fuori del ctime. Questo è molto frustrante perché fa casino con gli script che stanno controllando la modifica del file, anche quando non sta avvenendo alcuna modifica.

Di seguito è riportato un esempio di ciò che sto vedendo. Creo un nuovo file pdf chiamato test.pdf, tutto sembra a posto. Quindi lo apro con Anteprima, non faccio niente e chiudi l'anteprima. Ora il file ha un accesso aggiornato e cambia il tempo, ma non modificato. Per quanto posso dire, tutto il resto del file è identico, è come se il ctime fosse stato toccato senza motivo. Questo effetto sembra essere memorizzato nella cache in un certo senso, perché se lo apro di nuovo, viene aggiornato solo il tempo di accesso.

$ 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

C'è un modo per impedire che l'anteprima faccia ciò, a parte l'ingenuo prima copia il file, e basta guardare la copia?

Risposte:


7

Il filesystem e i metadati possono cambiare quando l'anteprima ha accesso in scrittura al file. Il motivo preciso è probabilmente complicato, ma puoi prevenirlo rimuovendo l'accesso in scrittura ( chmod a-w test.pdf ) e quindi utilizzando l'anteprima sul file. Nota, chmod aggiorna anche il ctime.


La mia ipotesi è che i campi di metadati come kMDItemUsedDates e kMDItemLastUsedDate siano la ragione per cui ctime viene aggiornato. Puoi usare mdls test.pdf per verificare quei dettagli prima e dopo i test.


2
Perché non ho pensato di rimuovere i permessi di scrittura! Hai anche ragione sui meta dati. Ha aggiunto kMDItemLastUsedDate, kMDItemUseCount e kMDItemUsedDates.
Erik

0

L'ho notato anche con le immagini. Quando ne apro uno in Anteprima, apporto le modifiche ad esso, e "forza quit" Anteprima, le modifiche persistono anche se non le ho mai salvate. Credo che ciò accada perché Preview salva automaticamente il tuo lavoro sovrascrivendo il file originale. La maggior parte degli utenti non se ne accorge perché quando chiudono il programma normalmente senza salvare, ripristina le modifiche e salva di nuovo il file.

Penso che ci siano due ragioni per cui lo fa, il primo è che, dal momento che i Mac gestiscono shutdown e riavvii molto bene (cioè in grado di mantenere tutto il tuo lavoro aperto e caricare di nuovo nel punto in cui era stato interrotto), allora probabilmente tutti i programmi fatti da Apple devi eseguire il salvataggio automatico per assicurarti che gli arresti avvengano nel modo più fluido possibile senza perdere nulla del nostro lavoro.

L'altro motivo (secondo me) è dovuto al modo in cui i Mac mostrano anteprime dei contenuti dei file nelle loro icone. Solitamente ogni volta che apporti modifiche a un file, l'icona viene automaticamente aggiornata per riflettere le modifiche apportate. Questo è particolarmente evidente con le immagini. Penso (e questa è solo un'ipotesi) che il modo in cui Anteprima rende l'aggiornamento dell'icona è salvando periodicamente il file. Ciò consente a Finder di gestire da solo eventuali aggiornamenti delle icone necessari senza bisogno di alcuna integrazione speciale con Anteprima.

Perché è necessario salvare immediatamente il file all'apertura anche se non sono state apportate modifiche? Non lo so per certo, ma immagino che potrebbe avere qualcosa a che fare con il modo in cui l'anteprima gestisce i file in memoria: ho notato che quando si apportano molte modifiche ad un'immagine ad alta risoluzione in anteprima, si perde effettivamente un quantità notevole di spazio libero sul disco. Ciò significa che Anteprima deve memorizzare parte della memoria su disco anziché RAM.

Solo un pensiero. Non sono sicuro che sia giusto o no.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.