ln 建立连接档

前面提到过两次连接档的概念,现在终于该好好介绍下这部分内容了连接档分为两种,硬连接(hard link)和软连接(symbolic link

Hard Links

上面内容中说过,当系统要读取一个文件时,就会先去读inode table,然后再去根据inode中的信息到块区域去将数据取出来hard link 是直接再建立一个inode连接到文件放置的块区域也就是说,进行hard link的时候实际上该文件内容没有任何变化,只是增加了一个指到这个文件的inode,不过这样一来就会有个问题,因为增加的inode会连接到块区域,而目录本身仅仅消耗inode而已,那么hard link就不能连接目录了请你记住,hard link 有两个限制:1 不能跨文件系统,因为不通的文件系统有不同的inode table 2 不能连接目录

Symbolic Linkshard link不同,这个是建立一个独立的文件,而这个文件的作用是当读取这个连接文件时,它会把读取的行为转发到该文件所link的文件上这样讲,也许比较绕口,那么就来举一个例子现在有文件a,我们做了一个软连接文件b(只是一个连接文件,非常小),b指向了文件a。当读取b时,那么b就会把读取的动作转发到a上,这样就读取到了文件a。所以,当你删除文件a时,文件b并不会被删除,但是再读取b时,会提示无法打开文件而,当你删除b时,a是不会有任何影响的
看样子,似乎 hard link 比较安全,因为即使某一个 inode 被杀掉了,只要有任何一个 inode 存在,那么该文件就不会不见!不过,不幸的是,由于 Hard Link 的限制太多了,包括无法做目录的 link ,所以在用途上面是比较受限的!反而是 Symbolic Link 的使用方向较广!那么如何建立软连接和硬连接呢?这就用到了ln 命令

ln 语法: ln [-s] [来源文件] [目的文件]
ln 常用的选项就一个-s ,如果不加就是建立硬连接,加上就建立软连接



在建立硬连接前后,123目录所占空间大小并没有改变



当把源文件删除后,空间仍旧没有变化说明了删除一个文件其实只是删除了inode信息



不能创建目录的硬连接



建立软连接后,456目录增加了4k



删除源文件后会提示没有这个文件的错误



目录是可以软连接的



删除软连接对源文件没有任何影响

添加新评论 »