Linux 文件系统最重要的特点之一是它的文件链接。链接是对文件的引用,这样您可以让文件在文件系统中多处被看到。不过,在 Linux 中,链接可以如同原始文件一样来对待。链接可以与普通的文件一样被执行、编辑和访问。对系统中的其他应用程序而言,链接就是它所对应的原始文件。当您通过链接对文件进行编辑时,您编辑的实际上是原始文件。链接不是副本。有两种类型的链接:硬链接和符号链接(软链接)。硬链结的意思是一个档案可以有多个名称,而软链结的方式则是产生一个特殊的档案,该档案的内容是指向另一个档案的位置。硬链结是存在同一个档案系统中,而软链结却可以跨越不同的档案系统(生成软链接时会生成一个和源文件不同的inode,而硬链接则的inode 和源文件相同)。不论是硬链结或软链结都不会将原本的档案复制一份,只会占用非常少量的磁碟空间(为什么???硬链接不是会生成和源文件同样大小的文件吗,如果不是源文件的副本,那里面的内容是什么?)。
在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号inode 。
软链接其实就是新建立一个文件,会重新建立一个inode。这个文件就是专门用来指向别的文件的(相当于windows的快捷方式)。故删除其本身没什么影响,但删除源文件后软链接生成的文件不可用。
硬链接是不会建立inode的,他只是在文件原来的inode link count域再增加1而已。硬链接只能引用同一文件系统中的文件。它引用的是文件在文件系统中的物理索引(也称为 inode)。当您移动或删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在文件结构中的位置。硬链接的文件不需要用户有访问原始文件的权限,也不会显示原始文件的位置,这样有助于文件的安全。如果您删除的文件有相应的硬链接,那么这个文件依然会保留,直到所有对它的引用都被删除。Linux上允许对同一个硬件设备在软件上有多个描述,而windows上则只允许有一个。硬链接的文件和源文件的同步性可能是与windows上最大的不同(个人感觉)。
二者的区别主要为:软链接可以跨文件系统,硬链接不可以;软链接可以对一个不存在的文件名(filename)进行链接(当然此时如果你vi这个软链接文件,linux会自动新建一个文件名为filename的文件),硬链接不可以(其文件必须存在,inode必须存在);软链接可以对目录进行连接,硬链接不可以。硬链接不允许连接到一个目录下,但软链接好像可以。
硬链接的建立: ln tatget symbolic_link_name
软链接的建立: ln -s tatget symbolic_link_name
主要的参数:
-f : 链结时先将与 dist 同档名的档案删除
-d : 允许系统管理者硬链结自己的目录
-i : 在删除与 dist 同档名的档案时先进行询问
-n : 在进行软连结时,将 dist 视为一般的档案
-s : 进行软链结(symbolic link)
-v : 在连结之前显示其档名
-b : 将在链结时会被覆写或删除的档案进行备份
-S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾
-V METHOD : 指定备份的方式
--help : 显示辅助说明
--version : 显示版本
具体结果如下:
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报。