Linux下的硬链接和软链接

来源:互联网 发布:视频画中画制作软件 编辑:程序博客网 时间:2024/05/21 18:45

Linux下的硬链接和软链接

1、【硬链接】(Hard Link),指通过索引节点来进行连接。在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都会给它分配一个编号,称为索引节点号(Inode Index)。当多个文件名指向同一索引节点时,就形成了硬链接。硬链接的好处是允许一个文件拥有多个有效路径名,这样用户就可以建立硬链接到重要文件,以防止误删。删除其中一个连接不会影响索引节点本身和其他连接,只有当最后一个连接被删除时,文件的数据块及目录的连接才会被释放。
2、【软链接】也叫符号链接(Symbolic Link),软链接类似于Windows的快捷方式,它实际上是一个特殊文件。在软链接中,文件实际上是一个文本文件,其中包含的有另一个文件的位置信息。
实例:

[root@admin home]# touch a.txt  #创建一个文件a.txt[root@admin home]# ln a.txt c.txt   #创建a的一个硬链接文件c.txt[root@admin home]# ln -s a.txt a1.txt  #创建a的一个软链接文件a1.txt[root@admin home]# ls -li   # -i 参数显示文件inode节点信息total 41179663 lrwxrwxrwx. 1 root root    5 Jun  2 08:51 a1.txt -> a.txt1179664 -rw-r--r--. 2 root root    0 Jun  2 10:32 a.txt1179664 -rw-r--r--. 2 root root    0 Jun  2 10:32 c.txt1179661 drwxr-xr-x. 2 root root 4096 Jun  2 08:51 dir11179660 -rw-r--r--. 1 root root    0 Jun  2 08:36 training

从上面的结果中可以看出,硬链接文件c和a的inode节点相同,都是 1179664,而软链接文件的inode节点不同,为1179663。

[root@admin home]# echo "I am a test file">>a.txt[root@admin home]# cat a.txtI am a test file[root@admin home]# cat c.txtI am a test file[root@admin home]# cat a1.txtI am a test file[root@admin home]# rm -f a.txt[root@admin home]# cat c.txtI am a test file[root@admin home]# cat a1.txtcat: a1.txt: No such file or directory

通过上面的测试,可以看出:当删除原始文件a.txt后,硬链接c.txt不受影响,但是软链接a1.txt文件无效。
总结:
◆ 删除软链接a1.txt,对a.txt、c.txt无影响;
◆ 删除硬链接c.txt,对a.txt、a1.txt无影响;
◆ 删除原文件a.txt,对硬链接c.txt无影响,但软链接a1.txt变为无效;
◆ 同时删除a.txt,硬链接c.txt,整个文件会被真正的删除。

0 0
原创粉丝点击