Linux课程笔记 软硬链接

Posted fengze

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux课程笔记 软硬链接相关的知识,希望对你有一定的参考价值。

1. 软硬链接的介绍和实践

1.1链接的概念

在linux系统中,链接分为硬链接和软链接。在默认不带参数的情况下,执行ln命令创建的是硬链接。

链接是指通过索引节点来进行链接。在linux系统中,多个文件名指向同一个索引节点是正常且允许的,这种是硬链接。硬链接的作用之一是允许一个文件有多个有效路径防止误删除源数据。

文件系统中,只要文件的索引节点还有一个以上的链接,只删除其中一个链接并不影响索引节点和其他的链接(即数据实体并未删除)。只有当最后一个链接被删除,此时如果有新数据要存储到硬盘时,被删除的文件的数据块及目录的链接才会被释放。

软链接实际上是一个文本文件,这个文件包含有软链接指向灵异文件的位置信息内容。

1.2示例

1.2.1文件示例:

[[email protected] test]# mkdir -p /test/qinbf

[[email protected] test]# cd /test/qinbf/

[[email protected] qinbf]# touch qinbf

[[email protected] qinbf]# ll

总计 4

-rw-r--r-- 1 root root 0 05-27 12:21 qinbf     #------à此时还没有创建链接,链接数为1

[[email protected] qinbf]# ln qinbf qinbf_hard_link  #----------à不加参数,默认创建硬链接

[[email protected] qinbf]# ll

总计 8

-rw-r--r-- 2 root root 0 05-27 12:21 qinbf  #-----------à此时由于硬链接的存在,链接数为2

-rw-r--r-- 2 root root 0 05-27 12:21 qinbf_hard_link

[[email protected] qinbf]# ln -s qinbf qinbf_soft_link

[[email protected] qinbf]# ll

总计 12

-rw-r--r-- 2 root root 0 05-27 12:21 qinbf

-rw-r--r-- 2 root root 0 05-27 12:21 qinbf_hard_link

lrwxrwxrwx 1 root root 5 05-27 12:22 qinbf_soft_link -> qinbf

[[email protected] qinbf]# ll -rti

总计 24

1409027 -rw-r--r-- 2 root root    0 05-27 12:21 qinbf_hard_link

1409027 -rw-r--r-- 2 root root    0 05-27 12:21 qinbf  #---à对边,发现qinbf文件和其硬链接文件的inode号是一致的

1409028 lrwxrwxrwx 1 root root    5 05-27 12:22 qinbf_soft_link -> qinbf  #------à而qinbf文件的软链接文件qinbf_soft_link的inode号则与qinbf文件inode号不一致

1409029 drwxr-xr-x 2 root root 4096 05-27 12:22 qinbfdir

1409030 lrwxrwxrwx 1 root root    8 05-27 12:23 qinbfdir_soft_link -> qinbfdir

 

1.2.2目录示例:

[[email protected] qinbf]# mkdir qinbfdir

[[email protected] qinbf]# ll

总计 20

-rw-r--r-- 2 root root    0 05-27 12:21 qinbf

drwxr-xr-x 2 root root 4096 05-27 12:22 qinbfdir

-rw-r--r-- 2 root root    0 05-27 12:21 qinbf_hard_link

lrwxrwxrwx 1 root root    5 05-27 12:22 qinbf_soft_link -> qinbf

[[email protected] qinbf]# ln qinbfdir qinbfdir_hard_link

ln: “qinbfdir”: 不允许将硬链接指向目录   #--------à目录不允许创建硬链接

[[email protected] qinbf]# ln -s qinbfdir qinbfdir_soft_link  #----------à目录可以创建软链接

[[email protected] qinbf]# ll -rti

总计 24

1409027 -rw-r--r-- 2 root root    0 05-27 12:21 qinbf_hard_link

1409027 -rw-r--r-- 2 root root    0 05-27 12:21 qinbf

1409028 lrwxrwxrwx 1 root root    5 05-27 12:22 qinbf_soft_link -> qinbf

1409029 drwxr-xr-x 2 root root 4096 05-27 12:22 qinbfdir

1409030 lrwxrwxrwx 1 root root    8 05-27 12:23 qinbfdir_soft_link -> qinbfdir

 

1.2.3内容输入示例:

[[email protected] qinbf]# echo "qinbf is a student" >>qinbf_soft_link

[[email protected] qinbf]# cat qinbf_soft_link

qinbf is a student

[[email protected] qinbf]# cat qinbf_hard_link

qinbf is a student

[[email protected] qinbf]# cat qinbf

qinbf is a student

[[email protected] qinbf]# echo "yes,I do">>qinbf

[[email protected] qinbf]# cat qinbf

qinbf is a student

yes,I do

[[email protected] qinbf]# cat qinbf_hard_link

qinbf is a student

yes,I do

[[email protected] qinbf]# cat qinbf_soft_link

qinbf is a student

yes,I do

结论:无论是在软链接文件或者是硬链接文件还是源文件输入内容,这三种类型的文件内容都是同步的。

 

1.2.4删除示例:

[[email protected] qinbf]# rm -f qinbf  #-----------à删除源文件

[[email protected] qinbf]# ll -rti

总计 24

1409028 lrwxrwxrwx 1 root root    5 05-27 12:22 qinbf_soft_link -> qinbf[q1] 

1409029 drwxr-xr-x 2 root root 4096 05-27 12:22 qinbfdir

1409030 lrwxrwxrwx 1 root root    8 05-27 12:23 qinbfdir_soft_link -> qinbfdir

1409027 -rw-r--r-- 1 root root   28 05-27 12:29 qinbf_hard_link

[[email protected] qinbf]# cat qinbf_soft_link  #------à此时,软链接文件失效

cat: qinbf_soft_link: 没有那个文件或目录

[[email protected] qinbf]# cat qinbf_hard_link  #------à硬链接文件内容还在

qinbf is a student

yes,I do

=============================以下是自己测试补充===========================

[[email protected] qinbf]# touch qinbf  #----------à之前已经删除,重新创建的同名新文件

[[email protected] qinbf]# ll -rti

总计 28

1409028 lrwxrwxrwx 1 root root    5 05-27 12:22 qinbf_soft_link -> qinbf[q2] 

1409029 drwxr-xr-x 2 root root 4096 05-27 12:22 qinbfdir

1409030 lrwxrwxrwx 1 root root    8 05-27 12:23 qinbfdir_soft_link -> qinbfdir

1409027 -rw-r--r-- 1 root root   28 05-27 12:29 qinbf_hard_link

1409031[q3]  -rw-r--r-- 1 root root    0 05-27 12:33 qinbf

[[email protected] qinbf]# cat qinbf_soft_link #------àqinbf_soft_link文件和新文件qinbf内容一致,为空

[[email protected] qinbf]# echo "This is new file">>qinbf  #-----à新增文件的内容

[[email protected] qinbf]# cat qinbf_soft_link #-------àqinbf_soft_link文件和新文件qinbf内容一致

This is new file

[[email protected] qinbf]# cat qinbf_hard_link #------à此时qinbf_hard_link文件还是被删除的qinbf文件的内容

qinbf is a student

yes,I do

 

1.3链接总结

通过以上测试,我们可以得到以下几个结论:

(1)       删除软链接文件,对源文件和硬链接文件没有影响

(2)       删除硬链接文件,对源文件和软链接没有影响

(3)       删除源文件,对硬链接文件无影响,软链接失效

(4)       同时删除源文件,和硬链接文件,整个文件会真正的被删除

(5)       很多硬件设备的快照功能,就是利用了硬链接的原理

(6)       建立与被删除的源文件同名的新文件,软链接文件还是有效,而硬链接无效(inode号不一致),亲测。

 对于目录,不可以创建硬链接,但可以创建软链接;目录不能跨越文件系统。

 

1.4空间不能释放的原因

(1)       硬链接的存在

(2)       另一个进程还在使用这个文件

(3)       磁盘剩余空间维护出现了问题

 

以上是关于Linux课程笔记 软硬链接的主要内容,如果未能解决你的问题,请参考以下文章

Linux课程笔记 Day03 课后作业精选

Linux课程第十八天学习笔记

20145321 《Java程序设计》课程总结

Linux运维学习笔记-软硬链接知识总结

Linux课程笔记 Day07 课上内容总结 SSH和rsync

linux课程笔记--基础部分