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 confusione con gli script che controllano la modifica del file, anche quando non si verificano modifiche.

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 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 guarda la copia?

    
posta Erik 17.06.2015 - 20:10
fonte

2 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 utilizzare mdls test.pdf per verificare quei dettagli prima e dopo i tuoi test.

    
risposta data 17.06.2015 - 22:19
fonte
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 lavoro aperto e caricare di nuovo nel punto in cui si era interrotto) probabilmente i programmi devono essere salvati automaticamente per assicurarsi 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 le 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 sua memoria su disco anziché su RAM.

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

    
risposta data 24.06.2015 - 04:29
fonte

Leggi altre domande sui tag