文件版本是什么意思:lsattr -v

文件版本是什么意思:lsattr -v

lsattr -v给我给定文件的“版本号”。

这是什么意思?

在 Redhat 7.3 上,我可以发誓所有版本号都是 1,除了那些我用chattr -v.

在 Fedora 11 上,它们似乎是随机的数字。

设置版本号甚至拥有文件的多个版本可能非常有用,所以我想了解如何“版本控制” 在 ext3 中工作。

答案1

lsattr -v调用EXT2_IOC_GETVERSION文件的 ioctl。反过来,这会检索 inode 的i_generation字段。这是一项主要用于 NFS 的功能:每次分配 inode 时,都必须确保它获得新一代。否则,具有陈旧文件句柄的 NFS 客户端可能会设法访问不适合它们的数据。 ext2/ext3/ext4 从卷全局计数器分配代号s_next_generation,该计数器在每次分配时都会递增。

答案2

这并不是真正的答案,而只是一个有趣的发现。

我尝试了一下lsattr -v,似乎您创建的每个新文件都会分配一个唯一的编号。我不确定这是否正确,我的过期记录如下。

$ mkdir temp                  # make a new folder
$ cd temp       
$ touch a b c d e f g         # create a lot files in that folder.
$ lsattr -v *                 # checkout those files using lsattr -v
1386486996 -------------e- a
1386486997 -------------e- b
1386486998 -------------e- c
1386486999 -------------e- d
1386487000 -------------e- e
1386487001 -------------e- f
1386487002 -------------e- g

此行为可能仅限于分布或者磁盘格式。

相关内容