inode结构体及软链接和硬链接
首先先了解一下block(块的概念),块是文件存取的最小单位,通常8个扇区为一个块,而每个扇区的大小为512个字节也就是0.5K,所以一个块的大小也就是8*0.5K=4K。
系统通过inode来识别文件
可以用命令stat查看某文件的inode信息,如:stat client.c
可看到除了文件名以外的文件信息都在inode中,因此,inode是保存文件的信息的,称为索引节点
一个文件包括两部分:一是它的元信息,二是文件数据
文件数据就放在扇区上,但操作系统每次以块为最小单元来读数据
文件元信息存储在叫做inode的区域中
一些常用命令:
stat 文件名 //查看某个文件的inode信息
df -i //查看硬盘分区的inode总数和已使用的数量
ls -i 文件名 //查看文件的inode号码
df -h //block
硬链接:两个或多个文件的inode号相同,假设有两个文件A和B,A和B的inode号相同,则打开A和B中任何一个文件实质上打开了一个文件,对其中一个进行操作另一个文件也会改变。但删除其中一个不会影响另一个文件。
创建硬链接 ln 源文件 目标文件 (inode结构体中链接数会加1)
我先创建了一个test1.c文件,然后通过硬链接命令创建出test2.c,查看它们的inode号码发现是一样的,你可以打开其中一个文件进行编辑,保存退出后再打开另一个文件,发现第二个文件里有和第一个文件里相同的内容,说明你打开的其实是同一个文件。
此时用stat命令查看文件inode信息,可以看到其中Links:2 表示链接数是2
在查看inode信息,发现链接数Links变为了1 但文件依然存在
软链接:还是假设有A和B两个文件,且它们两个的inode号不同,A文件的内容为B的路径,即打开其中任何一个文件都会打开文件B,称A为B的软链接。
创建软链接 ln -s 源文件 目标文件
和上面硬链接一样,先创建一个文件test1.c,通过命令ln -s test1.c test2.c 创建软连接
打开test1.c 和test2.c后发现它们的内容其实是一样的
但是这两个文件的inode号是不同的,可用命令ls -i 文件名进行查看
转载于:https://blog.51cto.com/lingdandan/1763181