软连接和硬链接的区别讲义.pdf

上传人:g****s 文档编号:86088607 上传时间:2023-04-13 格式:PDF 页数:9 大小:281.58KB
返回 下载 相关 举报
软连接和硬链接的区别讲义.pdf_第1页
第1页 / 共9页
软连接和硬链接的区别讲义.pdf_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《软连接和硬链接的区别讲义.pdf》由会员分享,可在线阅读,更多相关《软连接和硬链接的区别讲义.pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、linux 硬链接和软链接的区别 简而言之,软链接相当于 windows 中的快捷方式,硬链接相当于一个灾备系统,数据存放在两处,与复制不同 的是两处之间存在同步机制,一处数据的改变会实时同步到另一处,另外,一处数据如果被删除了,不会影响 到另一处的数据.下面是详细的介绍:硬连接指向的是节点(inode),是已存在文件的另一个名字,修改其中一个,与其连接的文件同时被修 改;对硬链接文件进行读写和删除操作时候,效果和软链接相同。但如果我们删除硬链接文件的源文件,硬链接文件仍然存在,而且保留了原有的内容。这时,系统就“忘记”了它曾经是硬链接文件,而把他当 成一个普通文件。硬链接文件有两个限制:1、

2、不允许给目录创建硬链接;2、只有在同一文件系统中的文件之间才能创建链接。软连接指向的是路径(path),软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是 任意文件或目录,还可以链接不同文件系统的文件,和 win 下的快捷方式差不多。软链接文件甚至可以链 接不存在的文件,这就产生一般称之为断链的问题(或曰“现象),链接文件甚至可以循环链接自己,类 似于编程语言中的递归。命令格式:ln-s source_path target_path /软链接文件 Source 为源文件 target 为目标文件。ln-d existfile newfile /硬链接文件,如果不加任何参数,默认情况

3、下就是硬链接.Newfile 为不是自己建的系统建的。示例:$ln httpd.conf httpd1.conf$ln-s httpd.conf httpd2.conf 第一条为硬链接,第二条为软链接$ls-li /查看一个文件或目录的 inode,要通过 ls 命令的的-i 参数,inode 值相同的文件,他们的关 系是互为硬链接的关系 总用量 80 1077669 -rw-r-r-2 sam adm 34890 10 月 31 00:57 httpd1.conf 1077668 lrwxrwxrwx 1 sam adm 10 10 月 31 00:58 httpd2.conf-;httpd

4、.conf 1077669 -rw-r-r-2 sam adm 34890 10 月 31 00:57 httpd.conf 可以看到,使用 ls-li,软连接只产生了 10 字节的快捷而已,硬连接却实实在在的的拷贝。最前面的 inode 硬链接和源文件是一样的,而软链接不一样.对 http1.conf 进行编辑,可以发现 httpd.conf 也发生了 一样的变化.现在使用命令:$rm httpd.conf 现在删除链接的源文件,来比较不同之处 代码:$ls-l 总用量 44 -rw-r-r-1 sam adm 34890 10 月 31 00:57 httpd1.conf lrwxrwxr

5、wx 1 sam adm 10 10月 31 00:58 httpd2.conf-;httpd.conf 发现,httpd2.conf 实际已经不存在了,是断链,而 httpd1.conf 变也了普通文件.一、硬链接 硬链接说白了是一个指针,指向文件索引节点,系统并不为它重新分配 inode。可以用:ln 命令来建立硬链 接。语法:ln options existingfile newfile lnoptions existingfile-list directory 用法:第一种:为”existingfile”创建硬链接,文件名为”newfile”。第二种:在”directory”目录中,为

6、”existingfile-list”中包含的所有文件创建一个同名的硬链接。常用可选options f 无论”newfile”存在与否,都创建链接。-n 如果”newfile”已存在,就不创建链接。下面举一些例子:$ls il 13058-rwx-1 longcheng longcheng 48 8月 5 16:38 file1 13059-rwx-1 longcheng longcheng 57 8月 5 16:40 file2$ln file2 file2hard$ls il 13058-rwx-1 longcheng longcheng 48 8月 5 16:38 file1 13059

7、-rwx-2 longcheng longcheng 57 8月 5 16:40 file2 13059-rwx-2 longcheng longcheng 57 8 月 5 16:40 file2hard 注意在创建链接前,file1 显示的链接数目为 1,创建链接后(1)file1 和file1hard 的链接数目都变为 2;(2)file1 和 file1hard 在 inode 号是一样的(3)file1 和 file1hard 显示的文件大小也是一样。可见进行了 ln 命 令的操作结果:file1 和 file1hard 是同一个文件的两个名字,它们具有同样的索引节点号和文件属性,建

8、 立文件 file1 的硬链接,就是为 file1 的文件索引节点在当前目录上建立一个新指针。如下图,你可以删除 其中任何一个,如 rm file2,每次只会删除一个指针,链接数同时减一,只有将所有指向文件内容的指针,也即链接数减为 0 时,内核才会把文件内容从磁盘上删 除。还可以在不同目录,但同一文件系统中建立文件的硬链接。设 file1、file2 在目录/home/longcheng/dir1 中,下面的命令,在/home/longcheng 中建立 file2 的硬链接。ln file2/home/longcheng/file2hard 下面的程序,是将 dir1 目录中所有文件,在目

9、录 dir2 中建立硬链接$mkdir dir2$ln/home/longcheng/dir1/*/home/longcheng/dir2 如果使用了 ln f existingfile newfile,如果 newfile 已经存在,则无论原来 newfile 是什么文件,只 用当前用户对它有写权限,newfile 就成为 exisitngfile 的硬链接文件。尽管硬链接节省空间,也是 Linux 系统整合文件系统的传统方式,但是存在一下不足之处:(1)不可以在 不同文件系统的文件间建立链接(2)只有超级用户才可以为目录创建硬链接。虽然很多树上说 root 用户 可以创建,但是笔者在学习过

10、程中发现即使是 root 用户也不能创建,我的系统是 Redhat,内核 2.4、2.6 都试过,在其他系统中不知道是不是可以。二、软链接(符号链接)软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现 在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同网络对 文 件进行链接。建立软链接,只要在 ln 后面加上选项 s,下面举个例子$ls-il 13058-rwx-1 longcheng longcheng 48 8 月 5 16:38 file1 13059-rwx-2 longcheng longcheng 57 8 月 5 16:40

11、file2 13059-rwx-2 longcheng longcheng 57 8 月 5 16:40 file2hard$ln s file1 file1soft$ls-il 13058-rwx-1 longcheng longcheng 48 8 月 5 16:38 file1 13059-rwx-2 longcheng longcheng 57 8 月 5 16:40 file2 13059-rwx-2 longcheng longcheng 57 8 月 5 16:40 file2hard 13061 lrwxrwxrwx 1 longcheng longcheng 5 8 月 5

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

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

14、文件系统,硬连接不可以。实践的方法就是用共享文件把 windows 下的 aa.txt 文本文档连接到 linux下/root目录 下 bb,cc.ln-s aa.txt/root/bb 连接成功。ln aa.txt/root/bb 失败。(2)关于 I 节点的问题。硬连接不管有多少个,都指向的是同一个 I 节点,会把 结点连接数增加,只要结点的连接数不是 0,文件就一直存在,不管你删除的是源文件还是 连接的文件。只要有一个存在,文件就 存在(其实也不分什么 源文件连接文件的,因为他们指向都是同一个 I 节点)。当你修改源文件或者连接文件任何一个的时候,其他的 文件都会做同步的修改。软链接不直

15、接使用 i 节点号作为文件指针,而是使用文件路径名作为指针。所以 删除连接文件 对源文件无影响,但是 删除 源文件,连接文件就会找不到要指向的文件。软链接有自己的 inode,并在磁盘上有一小片空间存放路径名.(3)软连接可以对一个不存在的文件名进行连接。(4)软连接可以对目录进行连接。备注:I 节点:它是 UNIX 内部用于描述文件特性的数据结构.我们通常称 I 节点为文件索引结点(信息结点).i 节点 含有关于文件的大部分的重要信息,包括文件数据块在磁盘上的地址.每一个I节点有它自己的标志号,我们称为文件顺序号.I节点包含的信息 1.文件类型 2.文件属主关系 3.文件的访问权限 4.文件

16、的时间截.linux 系统下提供 ln 指令来进行文件链接。文件链接主要分为硬链接和软链接。硬链接:由于 linux 下的文件是通过索引节点(Inode)来识别文件,硬链接可以认为是一个指针,指向文件索引节点的指针,系统并不为它重新分配 inode。每添加一个一个硬链接,文件的链接数就加 1。可以用:ln 命令来建立硬链接。语法:ln options existingfile newfile lnoptions existingfile-list directory 用法:第一种:为”existingfile”创建硬链接,文件名为”newfile”。第二种:在”directory”目录中,为”

17、existingfile-list”中包含的所有文件创建一个同名的硬链 接。常 用 可 选 options f 无 论”newfile”存 在 与 否,都 创 建 链 接。-n 如果”newfile”已存在,就不创建链接。例子:$ls il 13058-rwx-1 longcheng longcheng 48 8 月 5 16:38 file1 13059-rwx-1 longcheng longcheng 57 8 月 5 16:40 file2$ln file2 file2hard$ls il 13058-rwx-1 longcheng longcheng 48 8 月 5 16:38 f

18、ile1 13059-rwx-2 longcheng longcheng 57 8 月 5 16:40 file2 13059-rwx-2 longcheng longcheng 57 8 月 5 16:40 file2hard 注意在创建链接前,file1 显示的链接数目为1,创建链接后(1)file1和file1hard的链接数目都变为 2;(2)file1 和 file1hard 在 inode 号是一样的(3)file1 和 file1hard 显示的文件大小也是一样。可见进行了 ln 命令的操作结果:file1 和 file1hard 是同一个文件的两个名字,它们具有同样的索引节点号

19、和文件属性,建立文件 file1 的硬链接,就是为 file1的文件索引节点在当前目录上建立一个新指针。如下图,你可以删除其中任何一个,如 rm file2,每次只会删除一个指针,链接数同时减一,只有将所有指向文件内容的指针,也即链接数减为 0 时,内核才会把文件内容从磁盘上删除。不足:尽管硬链接节省空间,也是 Linux 系统整合文件系统的传统方式,但是存在一下不足之处:(1)不可以在不同文件系统的文件间建立链接(2)只有超级用户才可以为目录创建硬链接。软链接(符号链接):软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的

20、灵活性,甚至可以跨越不同机器、不同网络对文件进行链接。如果给 ln 命令加上-s 选项,则建立软链接。如果链接名已经存在但不是目录,将不做链接。链接名可以是任何一个文件名(可包含路径),也可以是一个目录,并且允许它与“目标”不在同一个文件系统中。如果链接名是一个已经存在的目录,系统将在该目录下建立一个或多个与“目标”同名的文件,此新建的文件实际上是指向原“目标”的符号链接文件。例子:$ls-il 13058-rwx-1 longcheng longcheng 48 8 月 5 16:38 file1 13059-rwx-2 longcheng longcheng 57 8 月 5 16:40

21、file2 13059-rwx-2 longcheng longcheng 57 8 月 5 16:40 file2hard$ln s file1 file1soft$ls-il 13058-rwx-1 longcheng longcheng 48 8 月 5 16:38 file1 13059-rwx-2 longcheng longcheng 57 8 月 5 16:40 file2 13059-rwx-2 longcheng longcheng 57 8 月 5 16:40 file2hard 13061 lrwxrwxrwx 1 longcheng longcheng 5 8 月 5

22、16:58 file1soft-file1 软链接与硬链接,区别不仅仅是在概念上,在实现上也是不同的。区别:硬链接原文件链接文件公用一个 inode 号,说明他们是同一个文件,而软链接原文件链接文件拥有不同的inode 号,表明他们是两个不同的文件;在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系;链接数目是不一样的,软链接的链接数目不会增加;文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的,这用强调,因为是等同的嘛,而这里软链接显示的大小与原文件就不同了,file1 大小是 48B,而 file1soft 是 5B,这里面的 5 实际上就是“file1”的大小。总之,建立软链接就是建立了一个新文件。当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到真正要访问的文件。缺点:因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,你想怎么移就怎么移;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 文案大全

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁