Почему значение inode меняется при редактировании в редакторе «vi»?

Почему значение inode меняется при редактировании в редакторе «vi»?

Когда я редактирую файл вviредактора, значение инода файла меняется. Но при редактировании командой catзначение инода не меняется.

решение1

Если вы хотите изменить файл, у вас есть два варианта, каждый из которых имеет свои преимущества и недостатки.

  • Вы можете перезаписать файл на месте. Это не использует дополнительное пространство и сохраняет жесткие ссылки, разрешения и любые другие атрибуты за пределами содержимого существующего файла. Главный недостаток этого способа заключается в том, что если что-то произойдет во время записи файла (приложение выйдет из строя или отключится питание), вы получите частично записанный файл.
  • Вы можете записать новую версию файла в новый файл с другим именем, а затем переместить его на место. Это занимает больше места и нарушает жесткие ссылки, а если у вас есть права на запись в файл, но не в каталог, который он содержит, вы вообще не сможете этого сделать. С другой стороны, старая версия файла атомарно заменяется новой версией, поэтому в каждый момент времени имя файла указывает на действительную, полную версию файла.

Продвинутые редакторы, такие как Vim или Emacs, могут выбирать между двумя методами. При использовании первого метода они обычно сначала создают резервную копию файла, которую можно восстановить, если содержимое нового файла не может быть записано правильно.

Классический vi перезаписывает файл на месте. Поэтому inode не изменяется.

В Виме,как уже заявил cjm, выбор контролируетсяbackup,backupcopyиwritebackupпараметры. По умолчанию Vim переименовывает старый файл, а затем записывает новый файл с исходным именем, если он считает, что может воссоздать атрибуты исходного файла. Если вы хотите повторно использовать существующий inode (и, таким образом, рискуете потерять данные или потратить больше времени на создание резервной копии), добавьте set backupcopy yesв свой .vimrc.

решение2

Скорее всего, вы установилирезервное копированиеопция включена, ирезервная копияна «нет» или «breakhardlink».

Связанный контент