硬链接和软连接
硬链接:
硬链接是指通过索引节点来进行转换,在Linux的文件系统中,保存在磁盘分区中的文件
不管是什么类型都会给它分配一个编号,这个编号被称为索引节点(Inode Index)或者成为Inode
在Linux系统中,多个文件中指向同一个索引节点(Inode)是正常允许的。一般这种链接就成为硬链接。硬链接的作用之一是允许一个多文件拥有多个
有效路径名,这样用户就可以建立硬链接到重要的文件,以防止“误删”源数据(很多硬件,如netapp存储中的快照功能就应用了这个原理,增加了一个快照就多了一个硬链接)。问什么文件建立了硬链接就会放置数据删除呢?
因为文件系统的原理是,只要文件名指向统一索引节点(Inode)还有一个以上的链接(仅仅删除了该文件指向)。只删除其中一个链接并不影响索引节点本身和其它的链接(既数据文件指向)。只删除一个链接并不影响索引节点本身和其它的链接(既数据文件实体并未被删除),只有当最后一个链接被删除后,此时如果有新数据要存储到硬盘时被删除文件的数据块及目录的链接才会被释放,空间被新数据占用覆盖。此时,数据就再也无法找回了。也就是说,在linux系统中,删除文件(其实目录也是文件)的添加是于之相关的所有硬链接文件均被删除。
软链接:
软链接有时也被称为符号链接(Symbolic Link)。软链接文件就类型与Windows系统中的快捷文件。它实际上是一个特殊的文件。在软链接中,软链接文件实际上就是一个本地文件,这个文件中包含有软链接指向另一文件的位置信息内容,因此,通过访问这个“快捷方式”就可以迅速定位到软链接所指向的源文件实体。
实例演示:
[root@localhost /]# mkdir /backup #创建一个空目录
[root@localhost backup]# touch 1.txt #创建一个测试空文件
[root@localhost backup]# cat 1.txt #查看空文件里边的内容
123456789
[root@localhost backup]# ln 1.txt 1.txt_ying #创建硬链接 ln
[root@localhost backup]# ls -ls
total 8
4 -rw-r--r--. 2 root root 10 Jan 31 06:10 1.txt
4 -rw-r--r--. 2 root root 10 Jan 31 06:10 1.txt_ying
[root@localhost backup]# ln -s 1.txt 1.txt_ruan #创建软链接 ln -s 文件名 新文件名
[root@localhost backup]# ll
total 8
-rw-r--r--. 2 root root 10 Jan 31 06:10 1.txt
lrwxrwxrwx. 1 root root 5 Jan 31 06:11 1.txt_ruan -> 1.txt #软链接
-rw-r--r--. 2 root root 10 Jan 31 06:10 1.txt_ying
[root@localhost backup]# mkdir 1.txt #创建一个目录
[root@localhost backup]# ll
total 4
drwxr-xr-x. 2 root root 6 Jan 31 07:04 1.txt #目录
lrwxrwxrwx. 1 root root 5 Jan 31 06:11 1.txt_ruan -> 1.txt
-rw-r--r--. 1 root root 10 Jan 31 06:10 1.txt_ying
[root@localhost backup]# ln 1.txt #目录创建硬链接
ln: ‘1.txt’: hard link not allowed for directory #目录不允许硬链接
[root@localhost backup]# ln -s 1.txt 1.txt_ruan_new #目录创建软链接
root@localhost backup]# ls -ll
total 4
drwxr-xr-x. 2 root root 6 Jan 31 07:04 1.txt
lrwxrwxrwx. 1 root root 5 Jan 31 06:11 1.txt_ruan -> 1.txt
lrwxrwxrwx. 1 root root 5 Jan 31 07:05 1.txt_ru_new -> 1.txt #目录软链接
-rw-r--r--. 1 root root 10 Jan 31 06:10 1.txt_ying
总结:Ln命令不能对目录创建硬链接,但可以对目录创建软链接,对于目录的软链接也是生产场景运维中常用的功能
[root@localhost backup]# rm -f 1.txt #测试删除创建的空文件
[root@localhost backup]# ll -li
total 4
33745512 lrwxrwxrwx. 1 root root 5 Jan 31 06:11 1.txt_ruan -> 1.txt
33745552 -rw-r--r--. 1 root root 10 Jan 31 06:10 1.txt_ying
提示:内容还在,其实这就是因为有1.txt_ying硬链接的存储,因此即使删除了1.txt,但是仍有硬链接指向着文件的INODE节点,所以,此时,文件才会被释放删除,当删除文件1.txt时,仅仅删除了1.txt该文件的INODE节点的链接而已。
总结:通过上面的测试可以看出:当删除原始文件1.txt后,硬链接1.txt_ying不收影响,但是软链接文件1.txt_ruan失效。
链接总结:
- 删除软链接1.txt_ruan,对1.txt_ying无影响
- 删除硬链接1.txt_ying对1.txt_ruan无影响
- 删除源文件1.txt,对硬链接1.txt_ying无影响,对软链接有影响。
来源:51CTO
作者:Azhouyuhang
链接:https://blog.51cto.com/12333622/2348290