Warum ändert sich der Inode-Wert, wenn wir im „vi“-Editor bearbeiten?

Warum ändert sich der Inode-Wert, wenn wir im „vi“-Editor bearbeiten?

Wenn ich eine Datei bearbeite imviEditor ändert sich der Inode-Wert der Datei. Beim Bearbeiten mit dem catBefehl ä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,backupcopyUndwritebackupOptionen. 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 yeszu Ihrem hinzu .vimrc.

Antwort2

Höchstwahrscheinlich haben Sie dieSicherungOption ein undSicherheitskopieauf „no“ oder „breakhardlink“.

verwandte Informationen