linux链接的使用创建和删除符号连接(软、硬链接)

author author     2023-03-18     212

关键词:

参考技术A 1 . 使用方式 :ln [option] source_file dist_file (source_file是待建立链接文件的文件,dist_file是新创建的链接文件)
-f 建立时,将同档案名删除.
-i 删除前进行询问.
ln -s abc cde 建立abc 的软连接
ln abc cde 建立abc的硬连接,

对于一个文件来说,有唯一的索引接点与之对应,而对于一个索引接点号,却可以有多个文件名与之对应。因此,在磁盘上的同一个文件可以通过不同的路径去访问该文件。注意在Linux下是一切皆文件的啊,文件夹、新加的硬盘 ...都可以看着文件来处理的啊。
连接有软连接和硬连接(hard link)之分的,软连接(symbolic link)又叫符号连接。符号连接相当于Windows下的快捷方式。
不可以对文件夹建立硬连接的,我们通常用的还是软连接比较多。

eg:
ln -s source dist # 建立软连接
ln source dist # 建立硬连接
软链接实际上只是一段文字,里面包含着它所指向的文件的名字,系统看到软链接后自动跳到对应的文件位置处进行处理;相反,硬联接为文件开设一个新的目录 项,硬链接与文件原有的名字是平权的,在Linux看来它们是等价的。由于这个原因,硬链接不能连接两个不同文件系统上的文件。
(1)软连接可以 跨文件系统 ,硬连接不可以 。实践的方法就是用共享文件把windows下的 aa.txt文本文档连接到linux下/root目录 下 bb,cc . ln -s aa.txt /root/bb 连接成功 。ln aa.txt /root/bb 失败 。
(2)关于 I节点的问题 。硬连接不管有多少个,都指向的是同一个I节点,会把 结点连接数增加,只要结点的连接数不是 0,文件就一直存在,不管你删除的是源文件还是 连接的文件 。只要有一个存在 ,文件就 存在 (其实也不分什么源文件连接文件的 ,因为他们指向都是同一个 I节点)。 当你修改源文件或者连接文件任何一个的时候 ,其他的文件都会做同步的修改。软链接不直接使用i节点号作为文件指针,而是使用文件路径名作为指针。所以 删除连接文件 对源文件无影响,但是删除源文件,连接文件就会找不到要指向的文件 。软链接有自己的inode,并在磁盘上有一小片空间存放路径名.
(3)软连接可以对一个不存在的文件名进行连接 。
(4)软连接可以对目录进行连接。

备 注:I节点 :它是UNIX内部用于描述文件特性的数据结构.我们通常称I节点为文件索引结点(信息结点).i节点含有关于文件的大部分的重要信息,包括文件数据块在 磁盘上的地址.每一个I节点有它自己的标志号,我们称为文件顺序号.I节点包含的信息 1.文件类型 2.文件属主关系 3.文件的访问权限 4.文件的时间截.

最后 删除符号链接,有创建就有删除
rm -rf symbolic_name 注意不是rm -rf symbolic_name/
在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号。文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问。

链接是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法。Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic link)。符号连接相当于Windows下的快捷方式。

硬链接说白了是一个指针,指向文件索引节点,系统并不为它重新分配inode。可以用:ln命令来建立硬链接。
语法:
ln [options] existingfile newfile(sexistingfile 待建立链接文件的文件,newfile是新创建的链接文件)
ln [options] existingfile-list directory

-f 建立时,将同档案名删除.
-i 删除前进行询问.

ln -s abc cde 建立abc 的软连接
ln abc cde 建立abc的硬连接,

用法:
第一种:为”existingfile”创建硬链接,文件名为”newfile”。
第二种:在”directory”目录中,为”existingfile-list”中包含的所有文件创建一个同名的硬链接。
常用可选[options] –f 无论”newfile”存在与否,都创建链接。-n 如果”newfile”已存在,就不创建链接。

下面举一些例子:

[ root@rekfan.com test]# ls -il
总计 0
1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
[ root@rekfan.com test]# ln file2 file2hand
[ root@rekfan.com test]# ls -il
总计 0
1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand
[ root@rekfan.com test]#

注意在创建链接前,file1 显示的链接数目为1,创建链接后file1和file1hard的链接数目都变为2;file1和file1hard在inode号是一样的file1和file1hard显示的文件大小也是一样。可见进行了ln命令的操作结果:file1和file1hard是同一个文件的两个名字,它们具有同样的索引节点号和文件属性,建立文件file1的硬链接,就是为file1的文件索引节点在当前目录上建立一个新指针。你可以删除其中任何一个,如rm file2 ,每次只会删除一个指针,链接数同时减一,当链接数减为0时,内核才会把文件内容从磁盘上删除。

还可以在不同目录,但同一文件系统中建立文件的硬链接。设file1、file2在目录/home/root/dir1中,下面的命令,在/home/root中建立file2的硬链接。

ln file2 /home/root/file2hard
下面的程序,是将dir1目录中所有文件,在目录dir2中建立硬链接

如果使用了 ln –f existingfile newfile,如果newfile已经存在,则无论原来newfile是什么文件,只用当前用户对它有写权限,newfile就成为exisitngfile的硬链接文件。

尽管硬链接节省空间,也是Linux系统整合文件系统的传统方式,但是存在一下不足之处:
(1)不可以在不同文件系统的文件间建立链接
(2)只有超级用户才可以为目录创建硬链接。

软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。
建立软链接,只要在ln后面加上选项 –s,下面举个例子

[ root@rekfan.com test]# ls -il
总计 0
1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand

[ root@rekfan.com test]# ln -s file1 file1soft
[ root@rekfan.com test]# ls -il
总计 0
1491138 -rw-r–r– 1 root root 48 07-14 14:17 file1
1491140 lrwxrwxrwx 1 root root 5 07-14 14:24 file1soft -> file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand

从上面链接后的结果可以看出来软链接与硬链接,区别不仅仅是在概念上,在实现上也是不同的。区别:硬链接原文件&链接文件公用一个inode号,说明他们是同一个文件,而软链接原文件&链接文件拥有不同的inode号,表明他们是两个不同的文件;在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系;链接数目是不一样的,软链接的链接数目不会增加;文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的,这用强调,因为是等同的嘛,而这里软链接显示的大小与原文件就不同了,file1大小是48B,而file1soft是5B,这里面的5实际上就是“file1”的大小。

总之,建立软链接就是建立了一个新文件。当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到真正要访问的文件。
在不同系统之间建立软链接、对目录建立链接,这里就不举例了,读者可以自己去尝试,我也是在不断实践中学习的。
当然软链接也有硬链接没有的缺点,因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了~~,而硬链接就没有这个缺陷,你想怎么移就怎么移(呵呵);还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。

补充一下:可以通过symlink来查看链接文件,可以用 man symlink来学习。
三、删除链接

有创建就有删除

rm -rf symbolic_name 注意不是rm -rf symbolic_name/

[ root@rekfan.com test]# ls -il
总计 0
1491138 -rw-r–r– 1 root root 0 07-14 14:17 file1
1491140 lrwxrwxrwx 1 root root 5 07-14 14:24 file1soft -> file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand
[ root@rekfan.com test]# rm -rf file1soft
[ root@rekfan.com test]# ls -il
总计 0
1491138 -rw-r–r– 1 root root 0 07-14 14:17 file1
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2
1491139 -rw-r–r– 2 root root 0 07-14 14:17 file2hand
[ root@rekfan.com test]#

————————————
linux 软连接和硬链接的区别:
————————————
4点不同 :
(1)软连接可以 跨文件系统 ,硬连接不可以 。
实践的方法就是用共享文件把windows下的 aa.txt文本文档连接到linux下/root目录 下 bb,cc . ln -s aa.txt
/root/bb 连接成功 。ln aa.txt /root/bb 失败 。

(2)关于 I节点的问题 。硬连接不管有多少个,都指向的是同一个I节点,会把 结点连接数增加 ,只要结点的连接数不是 0,文件就一直存在 ,不管你删除的是

源文件还是 连接的文件 。只要有一个存在 ,文件就 存在 (其实也不分什么 源文件连接文件的 ,因为他们指向都是同一个 I节点)。 当你修改源文件或者连接文件

任何一个的时候 ,其他的 文件都会做同步的修改 。软链接不直接使用i节点号作为文件指针,而是使用文件路径名作为指针。所以 删除连接文件 对源文件无影响,但

是 删除 源文件,连接文件就会找不到要指向的文件 。软链接有自己的inode,并在磁盘上有一小片空间存放路径名.

(3)软连接可以对一个不存在的文件名进行连接 。

(4)软连接可以对目录进行连接。

备注:I节点 :它是UNIX内部用于描述文件特性的数据结构.我们通常称I节点为文件索引结点(信息结点).i节点 含有关于文件的大部分的重要信 息,包括文件数据块在

磁盘上的地址.每一个I节点有它自己的标志号,我们称为文件顺序号.I节点包含的信息 1.文件类型 2.文件属主关系 3.文件的访问权限 4.文件的时间截.

linux中硬链接文件和软链接文件有啥区别?

linux系统中链接文件分为硬链接和软链接(软链接也叫符号链接)。硬链接和软链接都是指向文件的一种方式,但两者有不同的地方,主要有以下不同:1.硬链接是创建一个指向block的inode,有防止误删除的功能。因为删除一个文... 查看详情

linux命令ln的两个不同参数,-d硬链接,-s符号链接,有啥区别?

参考技术A硬链接就是同一个文件使用了多个别名(他们有共同的inode)。硬链接可由命令link或ln创建,如:linkoldfilenewfilelnoldfilenewfile由于硬链接是有着相同inode号仅文件名不同的文件,因此,删除一个硬链接文件并不影响其他有... 查看详情

什么是硬链接和软链接---2021-11-08

参考技术A硬链接:由于Linux下的文件是通过索引节点(inode)来识别文件,硬链接可以认为是一个指针,指向文件索引节点的指针,系统并不为它重新分配inode。每添加一个一个硬链接,文件的链接数就加1。不足:软链接:软链接... 查看详情

linux——软链接和硬链接(代码片段)

文章目录一、引入知识二、软链接1.软连接的创建1)文件创建软链接2)目录创建软链接3.删除软链接二、硬链接1.硬链接特点2.硬链接的创建3.删除3.特殊硬链接一、引入知识ls-l能显示出文件的详细信息,那么权限位后... 查看详情

硬链接与软链接

硬链接就是让链接文件的i节点号指向被链接文件的i节点硬链接和符号连接都是产生一个新的i节点链接分为硬链接和符号链接硬连接不能链接目录文件LINUX的硬链接不能链接到目录是因为引入了对目录的硬连接就有可能在目录中... 查看详情

linux软连接和硬链接的区别(代码片段)

阅读目录一、Linux链接概念1、【硬连接】2、【软连接】二、通过实验加深理解三、总结归纳一、Linux链接概念Linux链接分两种:一种被称为硬链接(HardLink)一种被称为符号链接(SymbolicLink)默认情况下,ln... 查看详情

linux中软链接和硬链接的区别与小结

硬链接的inode节点号和源文件完全相同,可以理解为一个文件有两个文件名。软链接的inode节点号和源文件不同,软链接的数据块中记录的是源文件的路径。举个形象些的例子,硬链接就像一个人有两个身份证,除了身份证的信... 查看详情

linux软链接(符号链接)

参考技术A软链接是linux中一个常用命令,它的功能是为某一个文件在另外一个位置建立一个同不的链接。具体用法是:ln-s源文件目标文件当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一... 查看详情

软连接与硬链接区别

...原来我们不管在linux和win上面删除某个文件只是删除一个链接而已。而linux把链接分为软链接和硬链接。接下来我们就从文件系统构成的基本原理出发来说明下linux软链接和硬链接的区别。文件系统简述:linux的哲学就是一切皆文... 查看详情

硬链接与软连接

硬链接与软连接写在前面   Linux系统中存在两种链接文件,硬链接(hardlink)和符号链接(symboliclink)。符号链接也称为软连接。想了解清楚这两种链接文件的区别并不容易,首先要清楚Linux文件系统的相关知识。我们... 查看详情

详解linux中的硬链接和软链接(代码片段)

...stat<文件名>命令查看包括inode在内的元数据。无论硬链接还是软链接,它们都是特殊的文件。硬链接硬链接和复制比较相像,但与复制不同的是,因为文件和其硬链接具有相同的inode,修改文件实际上是修改inode指向的数据块... 查看详情

linux上创建和更改硬链接和符号链接

概述在本篇中,学习创建和管理硬链接和符号链接。学习:创建硬或软链接识别链接并知道它们的类型理解复制与链接文件之间的区别使用链接执行系统管理任务链接简介在存储设备上,文件或目录包含在一些数据块中。有关某... 查看详情

软链接和硬链接

软连接和硬链接软连接:软连接不占用磁盘空间,源文件删除则软链接失效,类似于windows的快捷方式软链接命令:ln-s源文件 软链接文件  硬链接:硬链接只能连接普通文件,不能连接目录。其实硬链接就是同一个文... 查看详情

硬链接和软连接的区别以及ln-s和mv的区别(代码片段)

linux链接分两种,一种是硬链接(handlink)一种是软链接(symboliclink)ln命令是创建链接,默认是创建硬链接ln-s是创建软连接??什么是硬链接硬链接是通过索引节点来进行连接,在linux的文件系统中,保存在磁盘分区中的文件不管... 查看详情

linux硬链接,软连接和复制的区别

参考技术A1.硬链接实际上是为文件建一个别名,链接文件和原文件实际上是同一个文件。可以通过ls-i来查看一下,这两个文件的inode号是同一个,说明它们是同一个文件;而软链接建立的是一个指向,即链接文件内的内容是指向... 查看详情

硬链接和软连接

硬链接:指向同一个Inode硬链接Abc  110Bcd  110都指向一个inode (1)目录不支持硬链接;(2)硬链接不能跨文件系统;(3)创建硬链接会增加inode引用计数;  软链接(符号链接)软链接,系统是知道的,Abc 110Bc... 查看详情

软链接和硬链接的区别

1、答分类:在linux系统中,链接分为两种:一种是硬链接,一种是软链接。2、答概念:硬链接具有和源文件相同的inode节点号,软链接相当于windows系统的快捷方式(和源文件的inode节点号不同)。3、答创建:ln命令默认创建的是... 查看详情

软链接与硬链接的区别

使用ln命令创建的是硬链接,ln-s创建的是软链接。硬链接文件iNode节点与源文件节点号相同,软链接节点号与源文件不同,它只是源文件的一个快捷方式。不能对目录创建硬链接,但是可以创建软链接,对目录的软链接会经常用... 查看详情