Linux系统中的硬链接和软链接有何区别?

如题所述

在学习完硬盘管理知识后,刘遄老师可以深入讲解Linux系统中的“快捷方式”概念。在Windows中,快捷方式是链接原始文件的文件,当原文件变动时,快捷方式会失效。但在Linux,区分硬链接(hard link)和软链接(symbolic link)。硬链接更像一个指向原始文件inode的指针,共享同一个inode和文件,增删链接不影响原文件。除非文件的inode连接数降为0,否则删除原文件后,硬链接仍可访问。而软链接仅保存链接路径,可链接目录文件,跨文件系统,但原文件删除后失效,与Windows快捷方式类似。ln命令用于创建链接,带-s参数创建符号链接,不带则默认为硬链接。扎实的理论和实践是理解它们的关键。

通过实例,软链接如Windows快捷方式,创建后当原文件删除,链接不可读:

[root@linuxprobe ~]# echo "Welcome to linuxprobe.com" readme.txt
[root@linuxprobe ~]# ln -s readme.txt readit.txt
[root@linuxprobe ~]# cat readme.txt
Welcome to linuxprobe.com
[root@linuxprobe ~]# cat readit.txt
Welcome to linuxprobe.com
[root@linuxprobe ~]# ls -l readme.txt
-rw-r--r-- 1 root root 26 Jan 11 00:08 readme.txt
[root@linuxprobe ~]# rm -f readme.txt
[root@linuxprobe ~]# cat readit.txt
cat: readit.txt: No such file or directory

硬链接则更像对原文件存储位置的指向,即使原文件删除,新链接依然有效,因为不依赖于名称:

[root@linuxprobe ~]# echo "Welcome to linuxprobe.com" readme.txt
[root@linuxprobe ~]# ln readme.txt readit.txt
[root@linuxprobe ~]# cat readme.txt
Welcome to linuxprobe.com
[root@linuxprobe ~]# cat readit.txt
Welcome to linuxprobe.com
[root@linuxprobe ~]# ls -l readme.txt
-rw-r--r-- 2 root root 26 Jan 11 00:13 readme.txt
[root@linuxprobe ~]# rm -f readme.txt
[root@linuxprobe ~]# cat readit.txt
Welcome to linuxprobe.com

理解这两种链接的不同特性,需要理论和实践的结合。
温馨提示:答案为网友推荐,仅供参考
相似回答
大家正在搜