软链接和硬链接的区别

创建一个普通的文本文件及其软链接和硬链接

# 一个文本文件abc.txt
echo 'hello world' > abc.txt
# 创建软链接
ln -s abc.txt s_abc.txt
# 创建硬链接
ln abc.txt h_agc.txt

查看三个文件的详细信息

[root@Charramma ~]# ll -i

131419 -rw-r--r-- 2 root root        12 Sep  6 21:54 abc.txt
131419 -rw-r--r-- 2 root root        12 Sep  6 21:54 h_abc.txt
131421 lrwxrwxrwx 1 root root         7 Sep  6 21:55 s_abc.txt -> abc.txt

可以看出几点:

  1. 硬链接和源文件只有文件名上的不同,连inode都是一样的。这里注意一下,我是先创建的软链接,后创建的硬链接,但是软链接的创建时间是实际创建时间,硬链接的创建时间是源文件的创建时间。
  2. 软链接的文件类型是l(链接文件);硬链接的文件类型是普通文本类型。
  3. 软链接是和源文件完全不同的文件,权限位是777,不过访问软链接最后看的还是源文件的权限位。

删除源文件

[root@Charramma ~]# rm -f abc.txt 
[root@Charramma ~]# cat h_abc.txt 
hello world
[root@Charramma ~]# cat s_abc.txt 
cat: s_abc.txt: No such file or directory
[root@Charramma ~]# 

软链接已经不可访问了,硬链接不受影响。

重新创建abc.txt

[root@Charramma ~]# echo 'HELLO WORLD' > abc.txt
[root@Charramma ~]# cat s_abc.txt
HELLO WORLD
[root@Charramma ~]# cat h_abc.txt
hello world
[root@Charramma ~]# 

软链接可以访问了,内容是新的abc.txt文件内容;而硬链接的内容还是之前的内容。

总结:

  • 硬链接和原文件只是目录项不同,而inode和block都是一样的内容。软链接是全新的目录项,全新的inode和block,只是block里的内容是链接的文件名。
  • 删除原文件不会影响硬链接,但软链接会失效
  • 软链接只认文件名,硬链接认inode号。
原文地址:https://www.cnblogs.com/CharrammaBlog/p/13623984.html