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
此行为可能仅限于分布或者磁盘格式。