We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
每个文件都对应一个唯一的inode,inode用来存储文件的元信息,包括:
在Linux系统下,创建一个文件hello.txt
hello.txt
echo 'hello world' -> 'hello.txt'
接着使用stat命令查看hello.txt的inode信息:
stat hello.txt
文件:hello.txt 大小:14 块:8 IO 块:4096 普通文件 设备:fd00h/64768d Inode:34025713 硬链接:1 权限:(0644/-rw-r--r--) Uid:( 0/ root) Gid:( 0/ root) 环境:unconfined_u:object_r:admin_home_t:s0 最近访问:2022-08-18 15:44:56.158501724 +0800 最近更改:2022-08-18 15:44:56.158501724 +0800 最近改动:2022-08-18 15:44:56.158501724 +0800 创建时间:2022-08-18 15:44:56.158501724 +0800
操作系统使用inode号码来识别文件,而人使用文件名来识别文件
人在打开文件的时候,文件系统实际上是先通过文件名找到对应的inode号码,然后根据inode号码找到文件inode信息,根据inode信息找到文件内容所在的数据块,最后读取数据。
文件和inode的关系是一对一,而文件名和inode的关系则是一对多,系统允许多个文件名对应一个inode
inode信息中的硬链接(Links)数,就表示当前有几个文件名对应着该inode,换句话说,每个文件名就是文件的一个硬链接
使用ln命令为hello.txt生成一个硬链接,格式:ln 源文件名 硬链接文件名
ln 源文件名 硬链接文件名
ln hello.txt hello-hard-link.txt
再用stat hello.txt查看源文件的硬链接数,值从1变为2
rm -f hello-hard-link.txt
再次查看硬链接数,值从2变为1
当一个文件的硬链接大于1时,删除一个硬链接(也就是文件名),不会影响源文件,只有当硬链接数等于0,系统才会删除源文件
修改源文件内容,会影响所有硬链接,因为硬链接都是指向同一个源文件的数据块
软链接也叫符号链接,很好理解,可以理解为window系统里的快捷方式
先创建一个硬链接:
ln hello.txt hello_hard_link.txt
然后,创建一个软链接:
ln -s hello.txt hello_s.txt
此时,文件hello.txt有2个硬链接和1个软链接,接下来,删除刚刚用来创建软链接的文件名hello.txt:
rm -f hello.txt
这个时候,打开文件hello_s.txt就会报错“No such file or directory”。
hello_s.txt
刚才只是删除了一个文件名,并没有影响到源文件,但是通过软链接打开文件却报错了,并不是因为源文件不存在了,而是因为软链接指向的硬链接被删除了。
这就是软链接和硬链接的区别,软链接指向的是文件名(也就是硬链接),硬链接指向的是文件的inode号码。
The text was updated successfully, but these errors were encountered:
No branches or pull requests
什么是inode?
每个文件都对应一个唯一的inode,inode用来存储文件的元信息,包括:
在Linux系统下,创建一个文件
hello.txt
接着使用stat命令查看
hello.txt
的inode信息:inode和文件名
操作系统使用inode号码来识别文件,而人使用文件名来识别文件
人在打开文件的时候,文件系统实际上是先通过文件名找到对应的inode号码,然后根据inode号码找到文件inode信息,根据inode信息找到文件内容所在的数据块,最后读取数据。
硬链接
文件和inode的关系是一对一,而文件名和inode的关系则是一对多,系统允许多个文件名对应一个inode
inode信息中的硬链接(Links)数,就表示当前有几个文件名对应着该inode,换句话说,每个文件名就是文件的一个硬链接
增加硬链接
使用ln命令为
hello.txt
生成一个硬链接,格式:ln 源文件名 硬链接文件名
再用
stat hello.txt
查看源文件的硬链接数,值从1变为2删除硬链接
再次查看硬链接数,值从2变为1
当一个文件的硬链接大于1时,删除一个硬链接(也就是文件名),不会影响源文件,只有当硬链接数等于0,系统才会删除源文件
修改源文件
修改源文件内容,会影响所有硬链接,因为硬链接都是指向同一个源文件的数据块
软链接
软链接也叫符号链接,很好理解,可以理解为window系统里的快捷方式
先创建一个硬链接:
然后,创建一个软链接:
此时,文件
hello.txt
有2个硬链接和1个软链接,接下来,删除刚刚用来创建软链接的文件名hello.txt:这个时候,打开文件
hello_s.txt
就会报错“No such file or directory”。刚才只是删除了一个文件名,并没有影响到源文件,但是通过软链接打开文件却报错了,并不是因为源文件不存在了,而是因为软链接指向的硬链接被删除了。
这就是软链接和硬链接的区别,软链接指向的是文件名(也就是硬链接),硬链接指向的是文件的inode号码。
The text was updated successfully, but these errors were encountered: