linux 硬链接和软连接

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/wangjun5159/article/details/79290298

说明

首先,必须要清楚为什么有链接,链接存在的目的是什么?
为了文件的共享,linux推出了硬链接软链接
文件存储分为两部分,元数据区和内容数据区,元数据区存有创建时间、大小、权限、inode(index node)号,内容数据区存储文件的内容;
在打开文件时,通过文件名字找到文件的inode号,通过inode号找到文件,从而打开文件,也就是说文件名仅是为了好记,相当于inode的别名,所以可以多个文件名指向同一个inode号。

硬链接和软连接

相当于原文件的复制,inode号与原文件相同,用来防止误删除。删除原文件,硬链接仍然可用,因为文件内容没有删除,只是删除了指向文件内容的引用。硬链接就相当于指针,如果多个硬链接指向一个文件,删除文件等同于删除引用(原文件也只是一个引用而已),其它引用通过inode号仍然可以找到内容。
类似windows的快捷方式,链接的文件内容存储的原文件的路径,所以删除原文件会导致软连接不可用。

实战

创建硬链接,软连接
使用ln命令创建链接

ln - make links between files

ln a.txt a_hard //创建硬链接
ln -s a.txt a_soft //创建软链接
[root@localhost test_link]# ls -l
total 12
-rw-r--r-- 3 root root 31 Feb  8 15:23 a_hard
-rw-r--r-- 3 root root 31 Feb  8 15:23 a_hard2
lrwxrwxrwx 1 root root  5 Feb  8 15:23 a_soft -> a.txt
-rw-r--r-- 3 root root 31 Feb  8 15:23 a.txt

可以看到a_hard、a_hard2的inode号都是31,而a_soft的inode号则与原文件不同,并且a_soft指向a.txt;打开任何一个链接,都等同于打开a.txt原文件。

[root@localhost test_link]# cat a_hard
hello, this is hello a.
And u?

猜你喜欢

转载自blog.csdn.net/wangjun5159/article/details/79290298