软硬链接
什么是软硬链接
在linux里面我们可以首先创建一个文件
然后使用指令
ln -s
创建一个软链接,ln
指令创建一个硬链接我们成有独立inode的链接称之为==软链接==
没有独立inode的链接称之为==硬链接==
==这就是软硬链接最大的差别!==
具有独立inode的软连接——可以被当做独立的文件看待!
如何理解硬链接
我们可以看到硬链接无论是创建时间,还是所属组,除了名字之外几乎都是一样的!
当我们对myfile进行写入,我们可以发现硬链接的大小也一起改变了!但是软链接没有任何变化!
使用cat读取文件我们发现里面的内容以一模一样的!
==硬链接完全没有新增任何文件!因为没有给硬链接分配独立的inode!硬链接所用使用属性和内容都是使用链接的文件的!没有自己的属性集合和内容集合!==
这个计数器称之为——引用计数——又叫硬链接数!
==硬链接本质就是在指定的路径下,新增文件名和inode编号的映射关系!==
如何理解软链接
从
这个我们也可以看出来,软链接来识别一个文件不是依靠inode来实现的!
而是依靠目标文件的文件名来进行标识的!
==软链接具有独立的inode!也就是说具有独立的数据块!——那么其实软链接的数据块里面存的就是这个文件的路径==
这就是为什么当我们删除文件的时候这个软链接就失效了!
无论是重新创建一个==同名的硬链接==还是重新创建==一个同名的文件==!
我们发现都可以使得该软链==接重新生效!==
我们也可以通过
unlink
指令来去掉软链接硬链接也可以通过unlink去除
==软链接——其实就是Windows下的快捷方式!==
软链接的作用
==软链接的作用就是帮助我们快速的找到该文件——就是如同快捷方式一样==
例如:我们在一个很深的文件下有一个可执行程序,如果正常的使用我们就得将整个路径都打出来,但是有了软链接之后,我们就可以直接使用这个软链接来打开这个可执行文件!
‘
像是一个这样的程序
我们可以通过软链接来简单的使用这个可执行程序! ——==这就是软链接最广泛的应用==
硬链接的作用
我们创建一个空文件夹——我们会发现空文件夹一开始的硬链接数就是2!
而一个普通文件则是1——这是为什么?因为普通文件创建后本身就有一个文件名和inode就有一个映射关系,但是为什么空目录是2呢?
任意一个目录里面其实都是 一个点和两个点我们发现,==目录的inode和一个点的inode是一致的==!这就是为什么一个点是==当前目录==的含义!这个一个点就是当前目录的硬链接
我们在该空文件夹里面再创建一个文件,不出所料的,这个空文件夹也有两个硬链接!
==但是我们发现了dir文件里面的两个点和我们这个空文件的inode编号是一模一样的!==
==而且创建了dir后,硬链接数也增加了!==——这是因为dir里面的两个点作为==上一个目录==所以自然也要硬链接到上一个目录的inode!
==这就是一个文件的树状图==
这也是==硬链接的应用==
硬链接是不可以硬链接文件夹的!——普通用户不允许,只有操作系统自己允许,所以才会有一个点和两个点这两个硬链接
amc时间
Acesss:最后访问时间
Modify:文件内容最后修改时间
change:文件属性最后修改时间
对于任意一个文件都有这三个时间!
当我们修改文件的权限的时候——其实就是修改了文件的属性!所以change就是修改了文件的属性!
==当我们尝试对文件写入的时候我们发现modify改变了!但是为什么change也改变了?不是说change只有文件属性改变了才会一起修改吗——因为文件大小也是属性!我们写入了文件就变大了,所以文件的属性自然也一起改变了!==
当我们尝试访问的时候,我们就会发现access也会发生变化!
==但是当我们过一会(过个十几二十秒)在访问的时候我们会发现时间还是没有变化!——这是为什么?==
因为访问相比修改一般是更加的频繁的!早期的linux确实是一访问就修改!但是这样子在高频率的访问下效率就变低了!因为每一次都要去硬盘修改一下access时间!所以linux现在有一定的策略,再过来一定的时间或者一定的访问次数之后才会更新access时间!