Linux-------软链接和硬链接

下文是出自别人写的文章,末尾有链接!

一 建立软链接和硬链接的语法

软链接:ln -s 源文件 目标文件
硬链接:ln 源文件 目标文件
源文件:即你要对谁建立链接

二 什么是软链接和硬链接

1,软链接可以理解成快捷方式。它和windows下的快捷方式的作用是一样的。
2,硬链接等于cp -p 加 同步更新。

为了方便说明,我在根分区(/)下建立test文件夹,然后新建了一个jys文件
这里写图片描述
建立软链接和硬链接:
这里写图片描述

区别: 软链接文件的大小和创建时间和源文件不同。软链接文件只是维持了从软链接到源文件的指向关系(从jys.soft->jys可以看出),不是源文件的内容,大小不一样容易理解。
硬链接文件和源文件的大小和创建时间一样。硬链接文件的内容和源文件的内容一模一样,相当于copy了一份。
这里写图片描述

但是简单的copy的文件创建文件的时间应该是复制文件时的时间,肯定不会像硬链接那样和创建源文件的时间相同。你想的没错。
这里写图片描述
但是只要加一个选项-p,时间就一样了
这里写图片描述
这里写图片描述
那么cp -p的文件是不是就相当于硬链接了呢?其实不然,对于源文件的内容有修改,硬链接文件会同步更新修改,始终保持和源文件的内容相同,而复制的文件则不可能做到这一点。
这里写图片描述
所以,硬链接等于cp -p加同步更新。
软链接像快捷方式,方便我们打开源文件,这一点在windows中深有体会,那硬链接有哪些应用呢?
在多用户的操作系统里,你写一个脚本,程序等,没有完成,保存后等下次有时间继续写,但是其他用户有可能将你未写完的东西当成垃圾清理掉,这时,你对你的程序,脚本等做一个硬链接,利用硬链接的同步更新,就可以方式,别人误删你的源文件了。

三,删除源文件多软链接和硬链接的影响

这里写图片描述
查看软链接文件,查看的文件不存在。和windows一样,删除源文件,快捷方式也用不了。但是删除源文件,为什么硬链接文件还可以查看呢?
这里要简单说下i节点了。i节点是文件和目录的唯一标识,每个文件和目录必有i节点,不然操作系统就无法识别该文件或系统,就像没有上户口的黑户。linux操作系统是不识别些字母的,像这些jys ,jys.hard操作系统根本不知道是什么玩意。
这里写图片描述
可以看出硬链接文件和源文件i节点号相同,并且一个i节点可以对应多个文件名。
这里写图片描述
如图,删除了jys,只是删除了从920586到jys的映射关系,不影响它和jys.hard的映射关系。此图也解释了硬链接的同步更新,对源文件修改,操作系统只认i节点,于是操作系统就将修改内容写进所有i节点相同名字不同的文件。写到这里我突发奇想,如果对硬链接文件进行修改那么源文件会不会同步更新呢?留给读者自己试验吧!

答案是会的。

此文出自此处,请点击!


分割线


ln 命令

软链接:ln -s 源文件 目标文件
硬链接:ln 源文件 目标文件
源文件:即你要对谁建立链接

-f : 如果目标文件存在时,就主动的将目标文件直接删除后再建立。

硬链接的限制:

  1. 不能跨文件系统
  2. 不能链接目录

(软连接则没有这些限制。)

硬链接只是在某个目录下新增一条文件名链接到某inode号码的关联记录而已。

符号链接:

符号链接就是建立一个独立的文件,而这个文件会让数据的读取指向它链接的那个文件的文件名,也就是说链接文件的内容就是它会写上目标文件的文件名,故文件的大小就是目标文件的文件名的大小,每个字母占一个字节。

符号链接怎么链接到目录?

[root@A home]# ln -s /home/k /home/ab
[root@A home]# ls
ab k
[root@A home]# cd ab
[root@A ab]# ls
main.cpp
此命令表示在/home目录下创建一个链接到/home/k目录的名字为ab的符号连接。你访问ab目录实际上就是访问k目录

关于目录的链接数量

就是说,当我们建立目录的时候,它默认的链接数量是多少?我们知道建立一个空目录,会存在 . 与 … 这两个目录。
举个例子,当我们创建/testing目录时,基本上有/testing ,/testing/. 以及/testing/… 这三个文件,那么新目录的链接数为2,而上层目录的链接数则会增加1。(就是受上面几个文件的影响)
图:

猜你喜欢

转载自blog.csdn.net/weixin_43743711/article/details/115250843