目录
一、软硬链接的概念
在Linux的文件系统中,保存在磁盘分区的文件不管是什么类型都会分配给它一个编号,称为索引节点号(Innode Index)
1、硬链接
硬链接指通过索引节点来进行链接,只有文件能建立硬链接,目录不可以,类似于复制多份文件。多个文件名指向同一索引节点是存在的,一般这种链接就是硬连接。
作用:
硬连接的作用类似于复制多份文件备用,这样用户就可以建立硬连接到重要文件,以防止原始文件被误删。如果只删除一个链接并不影响索引节点本身和其他的链接,只有当最后一个链接被删除后,文件的数据块以及目录的链接才会被释放。也就是说如果想要真正删除文件,则需要将源文件以及硬连接文件都被删除。
2、软链接
另外一种软链接也叫符号链接,文件和目录都可以建立软链接,其原理类似于Windows的桌面快捷方式。软链接的符号文件实际上是一个文本文件,其中包含着另一个文件的位置信息,符号文件并不存储复制文件内容。
作用:
删除操作与源文件隔离,用于对重要文件建立连接,然后一系列的打开源文件的操作是针对软链接名称而言的,如果误删除符号文件也不影响,不会误删掉源文件。
命令进行软链接,可以讲链接文件放到/bin目录里面,对长命令进行短名称的软链接,那么可以简化命令长度;可以将软链接放在/bin目录下,那么就不用将软链接对应的源命令路径放到PATH中了。
二、软硬链接的语法
1、创建软硬链接
ln 源文件 链接文件名称 (硬链接)
ln -s 源文件 链接文件名称 (软链接)
2、删除
rm 选项 文件
例如删除创建的test
rm -rf test\
其中-f 指的是:忽略不存在的文件和参数,从不提示;-r指的是以递归的方式删除目录以及其内容
3、修改软硬连接
ln -snf 新的源文件或目录 链接文件或目录
其中-s 表示建立符号链接代替硬链接;-n 表示如果LINK_NAME是指向目录的符号链接,则将其视为普通文件;-f 表示删除存在的目标文件
例如 ln -snf etc/passwd /test/passwd 将test目录下的passwd文件指向etc目录下的passw文件
三、软硬链接的实验对比
首先我们先创建一个文件file1,创建它的硬链接文件file2,创建它的软连接文件file3,输入ls -i 查看到文件file1的inode节点号为34925620,硬链接文件file2的inode节点号为34925620,软连接文件file3的inode节点号为34925629
看图可知,源文件file1和硬链接文件file2的inode节点号一样都是34925620,软连接的inode节点号为34925629,所以可以知道软连接与源文件和硬链接的节点号是不一致的,而源文件与硬链接节点号一致。
那我们再来给源文件file1输入内容123来查看一下硬链接文件file2和软连接file3的文件内容
其中这个时候内容全是一致的
那么我们删除源文件file1的内容再来查看一下硬链接文件file2和软连接file3的内容情况
由图可知,此时硬链接文件file2内容依旧显示123;软连接文件file2和源文件file1内容显示不出来,提示找不到文件和目录
四、总结与归纳
如上实验总结:
删除符号链接(软链接)file3,对file1,file2没有影响; 删除硬连接file2,对file1,file3没有影响; 删除源文件file1,对硬连接file2没有影响,导致符号链接(软链接)失效; 同时删除源文件file1与硬连接file2,整个文件会真正的被删除。
综上:硬连接类似于文件备份复制,软链接类似于Windows的桌面快捷方式。