今天起,决定开始自学Linux命令及Shell脚本,并用Linux学习(命令行,Shell及其他知识点)这一系列记录下自己的心路历程,内容不分先后,只记录自己觉得有必要的,简单的就不记了!
第一个知识点:硬链接和软链接
一、链接的定义:在linux中,如果要维护同一份文件的两份或多份副本,除了保存多份单独的物理副本之外,还可以使用只保存一份物理副本和多份虚拟副本的方式,这种虚拟的副本就称之为链接。---《Linux命令行与脚本大全》
上面的解释来自书本,可以说是解释的很清楚了,按照我自己的理解就是:在linux系统中,如果要备份某个文件,除了复制一份原文件之外,还能使用虚拟文件的方式,相比window而言,确实是多了一种方式,因为windows中
我们通常是使用复制原文件的方式来备份文件。可是如果仅仅看这个解释,我还是不太明白这个虚拟是什么意思,它到底和物理副本有什么区别?通过一番测试和调研后得出如下结论:
链接又分为软链接和硬链接:
1、硬链接:硬链接相当于复制了一份原文件,它和原文件一模一样,包括文件索引节点号,所以它会占用存储空间,如果原文件被删除,它依然存在;
2、软链接:软链接只是创建了一个指向原文件的指针,它有新的文件索引节点号,不会占存储空间,如果原文件被删除,它也会失效;
共同点:当改变原文件内容的时候,链接文件的内容也会被同步修改;
二、命令介绍
创建链接文件的方式有两种,一种是cp命令(复制),一种是ln命令(链接),两种都能实现,从cp我们就能知道,链接其实是备份文件的的一种形式(个人观点!)
cp命令:
创建硬链接:cp -l src des
创建软链接:cp -s src des
ln命令:
创建硬链接:ln src des
创建软链接:ln -s src des
这里需要说一下自己学习过程中的一些心路历程:刚开始创建链接的时候搞不清楚src和des,不知道到底是给哪个文件创建一个副本,传参数的时候src和des到底哪个才是创建之后的文件,主要是因为没有系统的看书,
只是从别人的博客中看,所以直到看了书才明白,src和des的意思是,给源文件src创建一个副本des,所以在传这两个参数的时候,如果两个文件不在同一个目录,我们也可以连同文件所在的目录一起传入,这个地方
真是被自己的悟性蠢哭了呀!!!
三、命令实战
上面是对基本概念的解释,也是必备的理论部分,下面是实践部分,说的对不对,用命令验证一下不就见分晓了吗?
说了使用方式,下面直接上命令吧:我以ln命令为例,cp只要注意参数就行,不举例说明!
1、创建一个空文件作为源文件
2、给srcfile.txt创建一个硬链接
创建硬链接desfile1.txt后发现这两个文件的文件索引值是一样的,说明它们是完全相同的两个文件。
3、给srcfile.txt创建一个软链接
可以看出软链接文件的文件类型为l,且后面的表现形式也不一样,有一个->这样的符号指向源文件,且索引值也与源文件不一致,并且是新分配的!
这就验证了链接定义中所说的!
4、修改源文件内容查看硬链接文件和软链接文件的内容
从上面的实践可以看出,当源文件内容修改之后,对应的软链接文件和硬链接文件的内容也一并修改了!
5、删除源文件,查看链接文件
从上面的例子可以看出:当删除源文件之后,硬连接的文件依然存在,且有效,内容也能查看,但是软链接的文件失效,查看内容时会提示找不到文件!
这是不是验证了链接定义中的内容!!!
6、将源文件再次创建
从上面的例子可以看出:当我新建一个软链接指向的文件之后,软链接文件恢复,且指向新的文件,同时文件内容也会随着新文件的改变而改变,但是原来的硬链接文件还是删除文件的副本,并不是新建文件的副本。
所以说软链接会随着它所指向的那个文件的改变而改变,只要指向的文件名不变,即便删除再新建也会使其有效,只要文件名存在即可:
但是硬链接就是源文件的一个物理副本,如果原文件被删除,它依然有效,新建一个一模一样的文件,它依然是最原始的源文件;
由此可以看出,这个软链接确实有点花心啊,就像某些男生找女朋友,分了一个觉得自己死了,再找到一个又活过来了,不想硬链接,找到一个就这一直到天荒地老!哈哈~~
好了,对于软链接和硬链接的介绍就到这里,同样的可以用cp命令实现哦!!
原文地址:https://www.cnblogs.com/hellowhy/p/9123375.html