linux 文件系统中的软链接和硬链接

来源:互联网 发布:东邪西毒终极版 知乎 编辑:程序博客网 时间:2024/06/05 12:46

1、先介绍一下Linux中的 inode概念

Linux读文件时,首先去搜索inode,根据inode来读取文件内容。
Index node:数据结构,保存有文件/目录的信息(创建者,权限等)
每个linux文件系统中的对象(文件,目录)都有一个inode号。只要inode号一样,不管文件名是否相同,他们就是同一个文件。
ls -i filename 可查看inode号
eg: ls -il

2、硬链接和软链接

硬链接(hard link)

就是直接再建立一个inode连结到文件放置的block。
进行hard link的时候,文件内容不会改变,只是在查询的时候,利用原来的inode与后来的inode 均可找到数据放置的地点,因此两个文件的内容会是一样的。
对前一个文件的存取动作与对后一个文件一样。
目录本身只消耗inode,没有数据,所以hard link不能link目录。 
 硬链接的限制
不能跨文件系统,因为不同的文件系统有不同的inode表
不能 link 目录


软链接(符号链接)(Symbolic Links)
符号链接就是再建立一个独立的文件(有自己的inode),而这个文件会让数据读取指向他link的那个文件内容。
如果源文件被删除,那么符号链接将不再有效(打不开)

符号链接有不同的inode(软连接是快捷方式)
被连接的文件被删除,则连接文件失效。
连接文件被删除,被连接文件还是存在的


Linux 文件系统最重要的特点之一是它的文件链接。链接是对文件的引用,这样您可以让文件在文件系统中多处被看到。不过,在 Linux 中,链接可以如同原始文件一样来对待。链接可以与普通的文件一样被执行、编辑和访问。对系统中的其他应用程序而言,链接就是它所对应的原始文件。当您通过链接对文件进行编辑时,您编辑的实际上是原始文件。链接不是副本。有两种类型的链接:硬链接和符号链接。
硬链接 只能引用同一文件系统中的文件。它引用的是文件在文件系统中的物理索引(也称为 inode)。当您移动或删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在文件结构中的位置。硬链接的文件不需要用户有访问原始文件的权限,也不会显示原始文件的位置,这样有助于文件的安全。如果您删除的文件有相应的硬链接,那么这个文件依然会保留,直到所有对它的引用都被删除。
符号链接 是一个指针,指向文件在文件系统中的位置。符号链接可以跨文件系统,甚至可以指向远程文件系统中的文件。符号链接只是指明了原始文件的位置,用户需要对原始文件的位置有访问权限才可以使用链接。如果原始文件被删除,所有指向它的符号链接也就都被破坏了。它们会指向文件系统中并不存在的一个位置。两种链接都可以通过命令 ln 来创建。ln 默认创建的是硬链接。使用 -s 开关可以创建符号链接。

符号链接与硬链接有什么区别?
简单的说:

硬连接记录的是目标的 inode,符号连接记录的是目标的 path。
软连接就像是快捷方式,而硬连接就像是备份(对一个链接做的修改,别的链接也同步作更新)!

符号连接可以做跨分区的 link;而 硬连接由于 inode 的缘故,只能在本分区中做 link.所以,符号连接的使用频率要高的多。

3、文件链接的指令

 命令名称:ln
 使用语法 : ln [参数] source dest
功能 : 建立一个文件或者目录的链接
注意:链接分为硬链结(hard link)与软链结(symbolic link),硬链结的意思是一个档案可以有多个名称,而软链结的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链结是存在同一个文件系统中,而软连结却
可以跨越不同的文件系统。不论是硬连结或软链结都不会将原本的档案复制一份,只会占用非常少量的磁碟空间。

 参数 :  
-f : 链结时先将与 dest 同档名的档案删除(强制连接)
• -i : 在删除与 dest 同档名的档案时先进行询问
• -s : 进行软链结(相当于windows的快捷方式)

 软连接一个文件 ln –s /tmp/test /tmp/test.link
 硬链接一个文件 ln /tmp/test /tmp/test.link

给eclipse应用等创建软链接快捷方式还是蛮好的!

ln -s /opt/eclipse/eclipse/eclipse ./eclipse.link

原创粉丝点击