
Wenn ich eine Datei bearbeite imvi
Editor ändert sich der Inode-Wert der Datei. Beim Bearbeiten mit dem cat
Befehl ändert sich der Inode-Wert jedoch nicht.
Antwort1
Wenn Sie eine Datei ändern möchten, stehen Ihnen zwei Möglichkeiten zur Verfügung, jede mit ihren eigenen Vor- und Nachteilen.
- Sie können die Datei an Ort und Stelle überschreiben. Dadurch wird kein zusätzlicher Speicherplatz verbraucht und die Hardlinks, Berechtigungen und alle anderen Attribute, die über den Inhalt der vorhandenen Datei hinausgehen, bleiben erhalten. Der größte Nachteil dabei ist, dass Sie am Ende eine teilweise geschriebene Datei haben, wenn während des Schreibens der Datei etwas passiert (die Anwendung stürzt ab oder der Strom fällt aus).
- Sie können die neue Version der Datei in eine neue Datei mit einem anderen Namen schreiben und diese dann an ihren Platz verschieben. Dies verbraucht mehr Speicherplatz und unterbricht Hardlinks. Wenn Sie Schreibberechtigungen für eine Datei, aber nicht für das darin enthaltene Verzeichnis haben, können Sie dies überhaupt nicht tun. Auf der anderen Seite wird die alte Version der Datei automatisch durch die neue Version ersetzt, sodass der Dateiname zu jedem Zeitpunkt auf eine gültige, vollständige Version der Datei verweist.
Fortgeschrittene Editoren wie Vim oder Emacs können zwischen beiden Methoden wählen. Bei der ersten Methode legen sie normalerweise zunächst eine Sicherungsdatei an, die wiederhergestellt werden kann, wenn der neue Dateiinhalt nicht korrekt geschrieben werden kann.
Klassisches vi überschreibt die Datei an Ort und Stelle. Der Inode bleibt also unverändert.
In Vim,wie cjm bereits gesagt hat, die Auswahl wird gesteuert durch diebackup
,backupcopy
Undwritebackup
Optionen. Standardmäßig benennt Vim die alte Datei um und schreibt dann eine neue Datei mit dem ursprünglichen Namen, wenn es glaubt, dass es die Attribute der ursprünglichen Datei wiederherstellen kann. Wenn Sie den vorhandenen Inode wiederverwenden möchten (und damit Datenverlust riskieren oder mehr Zeit mit dem Erstellen einer Sicherungskopie verschwenden), fügen Sie set backupcopy yes
zu Ihrem hinzu .vimrc
.
Antwort2
Höchstwahrscheinlich haben Sie dieSicherungOption ein undSicherheitskopieauf „no“ oder „breakhardlink“.