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 Links:跟hard 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
删除源文件后会提示“没有这个文件”的错误。
目录是可以软连接的。
删除软连接对源文件没有任何影响。
Hard Links:
上面内容中说过,当系统要读取一个文件时,就会先去读inode table,然后再去根据inode中的信息到块区域去将数据取出来。而hard link 是直接再建立一个inode连接到文件放置的块区域。也就是说,进行hard link的时候实际上该文件内容没有任何变化,只是增加了一个指到这个文件的inode,不过这样一来就会有个问题,因为增加的inode会连接到块区域,而目录本身仅仅消耗inode而已,那么hard link就不能连接目录了。请你记住,hard link 有两个限制:1 不能跨文件系统,因为不通的文件系统有不同的inode table; 2 不能连接目录。
Symbolic Links:跟hard 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
删除源文件后会提示“没有这个文件”的错误。
目录是可以软连接的。
删除软连接对源文件没有任何影响。
none