标签:
说到Linux中的软硬链接,就必须谈一下Linux的文件系统的组成的重要部分iNode和block。
首先是iNode,先用一张图了解一下iNode在Linux文件系统中的地位:
Linux中的文件的文件名、文件属性和文件的数据是分开存储的。文件名存放在目录项(dentry)中,文件的属性存放在iNode中,而文件的内容,即文件的实际数据存放在block中,而目录只有iNode没有block。一般而言这个iNode的大小为128B,iNode中的内容大致如下:
1.文件的字节数;
2.文件拥有者的Uid;
3.文件的Gid;
4.文件的读、写、执行权限(r,w,x);
5.文件的时间戳,
ctime
指iNode上一次变动的时间,mtime指文件内容上一次变动
的时间,atime指文件上一次打开的时间;
6.链接数,即有多少文件名指向这个iNode;
7.文件对应的block的位置
可以用stat命令,查看某个文件或目录的iNode信息:
(1)软链接可以跨文件系统,硬链接不可以。
(2)硬链接不管有多少个,都指向的是同一个iNode,会把iNode链接数增加
只要iNode的链接数不是 0,文件就一直存在,不管你删除的是源文件还是链接的文件。只要有一个存在,文件就存在(其实也不分什么 源文件链接文件的,因为他们指向都是同一个 iNode)当你修改源文件或者链接文件任何一个的时候 ,其他的文件都会做同步的修改。软链接不直接使
用iNode号作为文件指针,而是使用文件路径名作为指针(软链接跟源文件的iNode不一样)。所以
删除链接文件对源文件无影响,但是删除源文件,链接文件就会找不到要指向的文件 。软链接有
自己的iNode,并在磁盘上有一小片空间存放路径名.
(3)软链接可以对一个不存在的文件名进行链接。
(4)软链接可以对目录进行链接,而硬链接不可以。
标签:
原文地址:http://www.cnblogs.com/maizi-1993/p/5578275.html