La modifica di un file collegato in una posizione sembra distruggerla in un'altra posizione

0

Ho un file, myfile.txt, che si trova nella cartella1. Dal terminale creo un hard link a questo file in un'altra directory con il comando

ln myfile.txt ~/Documents/folder2

Il nuovo file appare come previsto nella cartella2. Quando esamino l'inode per ogni file usando ls -i, dà lo stesso numero, come previsto. Tuttavia, se apro il file e lo modifica in folder1, dopo averlo salvato, se apro il file dalla cartella2 non ha dati. Analizzando i numeri inode con ls -i, i due file ora hanno numeri di inode diversi. Quindi la mia domanda è: perché sta succedendo questo? È questo il comportamento che dovrei aspettarmi? La mia comprensione era che gli hard link erano file veramente indistinguibili, solo nomi alternativi per gli stessi dati. Quindi mi aspetterei che alterare il file dopo l'apertura in una posizione non sia diverso da quando l'ho aperto dall'altra posizione. Qualcuno può spiegare cosa sta succedendo qui?

Se è importante, sto utilizzando Mavericks e il terminale predefinito.app.

Alcune informazioni aggiuntive. Il comportamento descritto si è verificato quando il file è stato modificato con TeXShop o TextEdit, quindi ho pensato che fosse qualcosa a livello di sistema operativo. Tuttavia sembra che non accada quando modifico il file con Aquamacs.

    
posta aberkow 25.06.2015 - 19:10
fonte

1 risposta

1

Un mio amico ha trovato la risposta per me. Apparentemente OS X ha una funzione writeToFile: atomicamente, che fa sì che una copia del file modificato sia fatta, quindi, al salvataggio, sostituendo il file originale con la copia. Poiché la copia esiste in una posizione diversa nel disco rigido, ha un numero di inode diverso. Quindi, dopo il salvataggio, il file aperto punta a una nuova posizione e i dati sull'inode originale vengono rimossi. Questo fa sì che l'altra copia del file non punti a nulla nella posizione originale inode.

    
risposta data 26.06.2015 - 00:48
fonte

Leggi altre domande sui tag