论坛风格切换切换到宽版
  • 725阅读
  • 2回复

[问题求助]关于软链接 [复制链接]

上一主题 下一主题
离线qq273580105.
 
发帖
2049
C币
-235857
威望
381
贡献值
1
银元
-1
铜钱
4522
人人网人气币
0
只看楼主 倒序阅读 使用道具 楼主  发表于: 2009-05-01
硬连接不管有多少.个,都指向的是同一个I节点,会把 结点连接数增加 ,只要结点的连接数不是 0,文件就一直存在 ,不管你删除的是源文件还是连接的文件 。只要有一个存在 ,文件就 存在 (其实也不分什么 源文件连接文件的 ,因为他们指向都是同一个 I节点)。当你修改源文件或者连接文件任何一个的时候 ,其他的. 文件都会.做同步的修改。软链接不直接使用i节点号作为文件指针,而是使用文件路径名作为指针。所以 删除连接文件 对源.文件无影响,但是 删除源文件,连接文件就会找不到要指向的文件 。软链接有自己的inode,并在磁盘上有一小片空间存放路径名...              乙肝


某位网友说我上面对软链接的理解是错误的,我自己也不知道错在哪,又不想一直错下去,所以.特来.求助。服务器


最佳答案寂寞烈火
http://upload.bbs.csuboy.com/Mon_1004/126_6705_c2515fb4e40125e.gif[/img]文件系统维护着一个分区的索引节点表索引节点也就是所谓的inode, 它其实就是代表这一个文件真实的数据块同样也记录着文件的其他属性如修改时间文件类型等域名

同样每个文件一般.表示就是使用目录项(dirent), 每个目录项包含着该文件的名字,该文件指向的inode节点标号等,记住linux把目录和文件都用目录项来表示,真实的文.件类型是在inode节.点里面            杀毒

新建一个硬连接其实也就.是新建一个目录项指向目标目录项指向的inode节点,一个inode节点可以指向多个目录项, 如果一个inode节点所引用的目.录项计数不为0,该.文件的真实数据是不会被外贸
释.放的,当计数为零且没有进程使用.时内核自动释放该文件的数据,所以如果删除了一个硬连接,域名
也只是删除了一个目录项,如果那个inod.e节点还执行其他的目录项,该文件的真实数据是不会.被删除的,其.实我们平时删除一个文件实际上调用的操作也就是unlink域名

新建一个符号连接其实也新建了.一个目录项,所以一个符号连接的名字可以和源.目标不同,但这个符号.连接的目录项里指向的inode节点里面的文件数据指针其实是指向该符号连接所引用的文件的真实地址, 如:服务器
ln -s /et.c/profile ./ss.
这里ss只是该符号连接文件在目录项里面的名字,而该目录项里面inode节点里面的文件数据指针指向的数据就是"/etc/profile"这个路径值, .且inode节.点里面.的文件类型是符号连接,(        游戏          )
所以系统在使用这类文件..时就知道读取符号连接文件的真实数据也就是源地址。.

系统是不允许普通用户创建目录的硬连接,因为硬连接可能造成循环,这样的硬连接.很难删除很容易造成文件.系统的混乱,如下面的错误操作:             电子
mkdir test
ln test test/te.st             电子
只有root用户才能创建目.录的硬连接.


评价一下你浏览此帖子的感受

精彩

感动

搞笑

开心

愤怒

无聊

灌水
发帖
2055
C币
-235906
威望
360
贡献值
1
银元
-1
铜钱
4622
人人网人气币
0
只看该作者 沙发  发表于: 2010-04-14
文件系统维护着一个分区的索引节点表索引节点也就是所谓的inode, 它其实就是代表这一个文件真实的数据块同样也记录着文件的其他属性如修改时间文件类型等

同样每个文件一般表示就是使用目录项(dirent), 每个目录项包含着该文件的名字,该文件指向的inode节点标号等,记住linux把目录和文件都用目录项来表示,真实的文件类型是在inode节点里面

新建一个硬连接其实也就是新建一个目录项指向目标目录项指向的inode节点,一个inode节点可以指向多个目录项, 如果一个inode节点所引用的目录项计数不为0,该文件的真实数据是不会被
释放的,当计数为零且没有进程使用时内核自动释放该文件的数据,所以如果删除了一个硬连接,
也只是删除了一个目录项,如果那个inode节点还执行其他的目录项,该文件的真实数据是不会被删除的,其实我们平时删除一个文件实际上调用的操作也就是unlink

新建一个符号连接其实也新建了一个目录项,所以一个符号连接的名字可以和源目标不同,但这个符号连接的目录项里指向的inode节点里面的文件数据指针其实是指向该符号连接所引用的文件的真实地址, 如:
ln -s /etc/profile ./ss
这里ss只是该符号连接文件在目录项里面的名字,而该目录项里面inode节点里面的文件数据指针指向的数据就是"/etc/profile"这个路径值, 且inode节点里面的文件类型是符号连接,
所以系统在使用这类文件时就知道读取符号连接文件的真实数据也就是源地址。

系统是不允许普通用户创建目录的硬连接,因为硬连接可能造成循环,这样的硬连接很难删除很容易造成文件系统的混乱,如下面的错误操作:
mkdir test
ln test test/test
只有root用户才能创建目录的硬连接


离线gjj3000gjj.
发帖
2013
C币
-140552
威望
393
贡献值
1
银元
-3
铜钱
4575
人人网人气币
0
只看该作者 板凳  发表于: 2010-04-14
对自己要有信心
你的理解 是对的
创建硬连接 文件系统的 大小不会变(不是太严谨 如果恰好 填满目录的一个block的话 可能会少一个block 的大小 )
硬连接 不能跨文件系统。
创建软连接 一般来说 会少一个block 的大小 存储的就是一个路径字符串
Ps:括号中的内容是我自己想当然

[ 本帖最后由 happyc84 于 2008-4-18 09:01 编辑 ]

快速回复
限100 字节
如果您在写长篇帖子又不马上发表,建议存为草稿
 
上一个 下一个