为什么 inode 不再使用硬链接更改

伊夫

我使用 Vim 8.2 在我的 Ubuntu 18.04 中编辑我的文件。当我打开一个文件,做一些更改并用 Vim 退出时,这个文件的 inode 号将被更改。

据我了解,是因为我的Vim开启了备份机制,所以每个版本都会创建一个新的文件(.swpfile)来替换旧的。一个新文件有一个新的 inode 编号。就是这样。

但是我发现了一些奇怪的东西。

如下所示,在第一个 之后vim 11.cpp,inode 发生了变化,409980变成了409978. 但是,在为文件创建硬链接后11.cpp,无论我如何11.cpp使用 Vim修改文件,其 inode 编号都不会再更改。如果我删除了硬链接xxx,它的 inode 编号将被我的 Vim 的每个版本再次更改。

这真的让我很困惑。

$ ll -i ./11.cpp
409980 -rw-rw-r-- 1 zyh zyh 504 Dec 22 17:23 ./11.cpp

$ vim 11.cpp     # append a string "abc" to the file 11.cpp
$ ll -i ./11.cpp
409978 -rw-rw-r-- 1 zyh zyh 508 Dec 22 17:25 ./11.cpp

$ vim ./11.cpp   # remove the appended "abc"
$ ll -i ./11.cpp
409980 -rw-rw-r-- 1 zyh zyh 504 Dec 22 17:26 ./11.cpp

$ ln ./11.cpp ./xxx   # create a hard link
$ ll -i ./11.cpp
409980 -rw-rw-r-- 2 zyh zyh 504 Dec 22 17:26 ./11.cpp

$ vim 11.cpp     # append a string "abc" to the file 11.cpp
$ ll -i ./11.cpp
409980 -rw-rw-r-- 2 zyh zyh 508 Dec 22 17:26 ./11.cpp

$ vim 11.cpp     # remove the appended "abc"
$ ll -i ./11.cpp
409980 -rw-rw-r-- 2 zyh zyh 504 Dec 22 17:26 ./11.cpp
卡米尔·马乔罗夫斯基

似乎设置backupcopyauto:set backupcopy?在 Vim 中运行以确认)。

主要值是:

yes制作文件的副本并覆盖原始
no文件,重命名文件并写入前一个新文件
auto,哪种效果最好

[…]

auto值是中间方式:当 Vim 看到可以在没有副作用的情况下重命名文件(属性可以传递并且文件不是链接)时使用。当预计出现问题时,将制作一份副本。

如果不清楚:(yes复制和覆盖)不会更改 inode 编号,no(重命名并重新写入)会更改它。

在你的情况下,起初auto就像no. ln ./11.cpp ./xxxVim注意到有另一个链接并autoyes.

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么“ /”有inode 2?

来自分类Dev

以原子方式写入文件而不更改inode(保留硬链接)

来自分类Dev

为什么inode偏移值似乎超过inode大小?

来自分类Dev

为什么在inode中使用间接指针不会产生相同数量的空间?

来自分类Dev

什么是差异inode位图和inode表

来自分类Dev

inode的设备是什么?

来自分类Dev

凯特(Kate)更改inode

来自分类Dev

为什么要限制用户可以访问的inode数量?

来自分类Dev

为什么特殊设备文件具有inode?

来自分类Dev

为什么/ proc和/ sys具有inode 1?

来自分类Dev

为什么存在硬链接?

来自分类Dev

两个硬链接文件共享inode

来自分类Dev

当 rm 一个文件但硬链接仍然存在时,inode 将被标记为“未使用”?

来自分类Dev

使用netlink获取进程inode

来自分类Dev

限制命令使用的inode缓存

来自分类Dev

就ext4上的存储使用而言,使用16384的inode_ratio有什么含义?

来自分类Dev

为什么是 '。' Unix中的硬链接?

来自分类Dev

为什么67108864的最大每inode字节数比例是多少?为什么会有最大值?

来自分类Dev

为什么用两个参数(struct inode *,struct file *)打开调用?

来自分类Dev

为什么目录/ home,/ usr,/ var等都具有相同的inode编号(2)?

来自分类Dev

为什么安装的nas在用户分区上显示0个inode?

来自分类Dev

为什么文件的Inode号发生变化,而没有其他变化?

来自分类Dev

很多使用Node.js的Inode

来自分类Dev

使用inode编号在Linux上删除文件

来自分类Dev

为什么硬链接似乎占据了与原始链接相同的空间?

来自分类Dev

为什么/ bin中混合了符号链接和硬链接?

来自分类Dev

MVC-为什么使用ActionLink而不是对链接进行硬编码?

来自分类Dev

通过不再在日志中的inode进行还原?

来自分类Dev

在FreeBSD或Solaris中,inode的作用是什么

Related 相关文章

  1. 1

    为什么“ /”有inode 2?

  2. 2

    以原子方式写入文件而不更改inode(保留硬链接)

  3. 3

    为什么inode偏移值似乎超过inode大小?

  4. 4

    为什么在inode中使用间接指针不会产生相同数量的空间?

  5. 5

    什么是差异inode位图和inode表

  6. 6

    inode的设备是什么?

  7. 7

    凯特(Kate)更改inode

  8. 8

    为什么要限制用户可以访问的inode数量?

  9. 9

    为什么特殊设备文件具有inode?

  10. 10

    为什么/ proc和/ sys具有inode 1?

  11. 11

    为什么存在硬链接?

  12. 12

    两个硬链接文件共享inode

  13. 13

    当 rm 一个文件但硬链接仍然存在时,inode 将被标记为“未使用”?

  14. 14

    使用netlink获取进程inode

  15. 15

    限制命令使用的inode缓存

  16. 16

    就ext4上的存储使用而言,使用16384的inode_ratio有什么含义?

  17. 17

    为什么是 '。' Unix中的硬链接?

  18. 18

    为什么67108864的最大每inode字节数比例是多少?为什么会有最大值?

  19. 19

    为什么用两个参数(struct inode *,struct file *)打开调用?

  20. 20

    为什么目录/ home,/ usr,/ var等都具有相同的inode编号(2)?

  21. 21

    为什么安装的nas在用户分区上显示0个inode?

  22. 22

    为什么文件的Inode号发生变化,而没有其他变化?

  23. 23

    很多使用Node.js的Inode

  24. 24

    使用inode编号在Linux上删除文件

  25. 25

    为什么硬链接似乎占据了与原始链接相同的空间?

  26. 26

    为什么/ bin中混合了符号链接和硬链接?

  27. 27

    MVC-为什么使用ActionLink而不是对链接进行硬编码?

  28. 28

    通过不再在日志中的inode进行还原?

  29. 29

    在FreeBSD或Solaris中,inode的作用是什么

热门标签

归档