ln命令,linux中的硬链接与软链接

it2022-05-08  15

软链接和硬链接软链接(符号链接),需要在ln命令后面加上-s 创建名称为3.txt.slink 的软链接:ln -s 3.txt 3.txt.slink(快捷方式的名称,随便起)

(其中3.txt称为被链接文件,3.txt.slink称为链接文件)

(2)输入ls -l  命令查看

(3)通过链接文件查看内容

(4)输入vi 3.txt  修改文件内容

尝试删除3.txt(删除软链接的被链接文件,链接文件会变成红色,这时打开链接文件会报错,报找不到被链接的文件这种错误)

链接变为红色

此时无法访问文件

重新创建一个3.txt(此时又正常是蓝色的3.txt.slink)

删除3.txt.slink不会影响,被链接的文件(删除软链接的链接文件,被链接文件不会受到任何影响)

软链接还有如下特点:

软链接的链接文件就是一个基本单元大小的文件,一般为3B,和被链接文件的大小没有关系软链接的链接文件中存储的是被链接文件的元信息,路径或inode节点。软链接的链接文件是一个独立的文件,有自己的元信息和inode节点。软链接可以链接任何类型的文件,包括目录和设备文件都可以作为被链接1对象。

硬链接:原理如下:在存储器只存储了一份数据,而被链接文件和链接文件其实都是对这一份数据的引用,所以这份数据就会有最小为2的引用计数,所以才会删除两个文件中的任意一个,删除的都是引用计数,不会影响这一份数据,而另外的一个引用照样可以访问这份数据。如果另外一个引用也被删除了,那么引用计数就为0,在Linux中,一旦引用计数为0,则认为该数据被删除了,这时数据就会被彻底清空。

(1)创建硬链接 ln 3.txt 3.txt.hlink

ll查看(硬链接与被链接文件除了名字不同,其他信息完全相同)

查看文件的详细信息发现两个文件完全相同

尝试删除文件(发现其链接文件依旧可以访问这是其与软链接的区别

查看文件信息(发现links变成1了)

硬链接的特点是:

硬链接占用的空间和被链接文件占用的文件一样大(即同一片空间)修改链接文件和被链接文件中的一个,另外一个随之同样发生变化硬链接的对象不能是目录,也就是说被链接文件不能为目录

创建目录的软链接

查看链接

对比和源文件的不同

不允许给目录创建硬链接

硬链接Inode结点相同(如图)

删除硬链接中的任意一个文件,另一个文件不会被删除。没有任何影响,链接文件一样可以访问,内容和被链接文件一模一样。

总结

链接文件分为软链接和硬链接。

软链接:软链接不占用磁盘空间,源文件删除则软链接失效。

硬链接:硬链接只能链接普通文件,不能链接目录,源文件删除而硬链接依旧能用。

//硬链接(还是普通文件)

ln test1.txt test1.lnk

硬链接的inode信息和源文件相同,表示指向一个物理文件

//软件链接(类似windows的快捷方式),文件类型是l(符号链接)

ln -s test1.txt test1.lnk

 


最新回复(0)