linux软链接与硬链接的区别

Linux
文件系统最重要的特点之一是它的文件链接。链接是对文件的引用,这样可以让文件在文件系统中多处被看到。不过,在 Linux
中,链接可以如同原始文件一样来对待。链接可以与普通的文件一样被执行、编辑和访问。对系统中的其他应用程序而言,链接就是它所对应的原始文件。当您通过链接对文件进行编辑时,您编辑的实际上是原始文件。链接不是副本,linux有两种类型的链接:硬链接和符号链接(软链接)。

硬链接(hard link)只能引用同一文件系统中的文件。它引用的是文件在文件系统中的物理索引(也称为
inode)。当您移动或删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在文件结构中的位置。硬链接的文件不需要用户有访问原始文件的权限,也不会显示原始文件的位置,这样有助于文件的安全。如果您删除的文件有相应的硬链接,那么这个文件依然会保留,直到所有对它的引用都被删除。

另外一种链接称之为符号链接(Symbolic Link),也叫软链接。软链接文件有类似于Windows的快捷方式。它实际上是一个特殊的文件。在软链接中,文件实际上是一个文本文件,其中包含有另一文件的位置信息,如果删了这个软链接文件,那就等于不需要这个链接,和原来存在的实体原文件没有任何关系,但删除原来的文件,则相应的软连接也不可用。

创建硬链接:ln filename 【linkname】

创建软链接:ln -s filename 【linkname】

[[email protected] opt]# touch aa     #创建文件aa
[[email protected] opt]# ln aa bb     #创建aa的硬链接bb
[[email protected] opt]# ln -s aa cc    #创建aa的软链接cc
[[email protected] opt]# ll -i        #查看结果及inode值
总用量 0
2490370 -rw-r--r--. 2 root root 0 7月  30 04:36 aa
2490370 -rw-r--r--. 2 root root 0 7月  30 04:36 bb
2490371 lrwxrwxrwx. 1 root root 2 7月  30 04:36 cc -> aa
[[email protected] opt]# ln ../opt/aa /boot/dd     #跨文件系统创建aa的硬链接dd,有报错信息
ln: 创建硬链接"/boot/dd" => "../opt/aa": 无效的跨设备连接
[[email protected] opt]# ln -s ../opt/aa /boot/ee    #跨文件系统创建aa的软链接ee,无报错信息
[[email protected] opt]# ll -i /boot/      #查看结果及inode值
  39 lrwxrwxrwx. 1 root root        9 7月  30 04:37 ee -> ../opt/aa
[[email protected] opt]# ln ff gg      #为不存在的ff创建硬链接gg,有报错信息
ln: 正在访问"ff": 没有那个文件或目录
[[email protected] opt]# ln -s ff hh     #为不存在的ff创建软链接hh,无报错信息
[[email protected] opt]# ll -i      #查看结果及inode值
总用量 0
2490370 -rw-r--r--. 2 root root 0 7月  30 04:36 aa
2490370 -rw-r--r--. 2 root root 0 7月  30 04:36 bb
2490371 lrwxrwxrwx. 1 root root 2 7月  30 04:36 cc -> aa
2490373 lrwxrwxrwx. 1 root root 2 7月  30 04:37 hh -> ff
[[email protected] opt]# echo aaaaaaaaaa > aa    #在aa文件中写入内容
[[email protected] opt]# cat aa       #查看源文件aa的内容
aaaaaaaaaa
[[email protected] opt]# cat bb       #查看硬链接bb的内容
aaaaaaaaaa
[[email protected] opt]# cat cc       #查看软链接cc的内容
aaaaaaaaaa
[[email protected] opt]# rm -f aa     #删除源文件aa
[[email protected] opt]# cat bb       #删除源文件aa后查看硬链接bb的内容
aaaaaaaaaa
[[email protected] opt]# cat cc       #删除源文件cc后查看软链接cc的内容
cat: cc: 没有那个文件或目录
[[email protected] opt]# ll -i        #删除源文件后查看链接结果及inode值
总用量 4
2490370 -rw-r--r--. 1 root root 11 7月  30 04:45 bb
2490371 lrwxrwxrwx. 1 root root  2 7月  30 04:36 cc -> aa
2490373 lrwxrwxrwx. 1 root root  2 7月  30 04:37 gg -> ff

从以上操作过程中可以看到硬链接文件与源文件的inode值一样,即硬链接文件与源文件同属一个数据块,软链接文件与源文件的inode值不一样,即软链接文件是单独存在的一个文本文件。当源文件被删除时,硬链接文件不受影响,而软链接文件则无效。

硬链接特性:

  • 文件有相同的 inode 及 data block;
  • 只能对已存在的文件进行创建;
  • 不能交叉文件系统进行硬链接的创建;
  • 不能对目录进行创建,只可对文件创建;
  • 删除一个硬链接文件并不影响其他有相同 inode 号的文件;

软链接特性:

  • 软链接有自己的文件属性及权限等;
  • 可对不存在的文件或目录创建软链接;
  • 软链接可交叉文件系统;
  • 软链接可对文件或目录创建;
  • 创建软链接时,链接计数 i_nlink 不会增加;
  • 删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接);

如下图所示软链接、硬链接及源文件的关系:

时间: 2024-10-10 04:19:14

linux软链接与硬链接的区别的相关文章

LINUX “软链接”和“硬链接”的区别

今天在知乎上看到一篇十分有趣的问题: 如何评价微软高级工程师痴迷于soft link这一linux常见概念? 虽然又是知名撕逼王曾某的撕逼帖,但是我还是想就题目中链接的问题简单地讲讲. 什么是链接? 链接简单说实际上是一种文件共享的方式,是 POSIX 中的概念,主流文件系统都支持链接文件. 它是用来干什么的? 你可以将链接简单地理解为 Windows 中常见的快捷方式(或是 OS X 中的替身),Linux 中常用它来解决一些库版本的问题,通常也会将一些目录层次较深的文件链接到一个更易访问的目

Linux下软链接与硬链接的区别

Linux下软链接与硬链接的区别 Linux中的文件都文件名和数据,在linux上面被分为两个部分:元数据与数据.用户数据,即文件数据块(data block),数据块是记录文件真实内容的地方,而元数据是文件的附加属性,如大小,创建时间,所有者等信息.在Linux中,元数据中的inode号(inode是文件的元数据的一部分,但其不包含文件名,inode号即索引节点号)才是文件的唯一标识而不是文件名.文件名仅是为了方便人们的记忆和使用,系统或程序通过inode号寻找正确的文件数据快.下图为程序通过

[转帖]Linux 下软链接和硬链接的区别

Linux 下软链接和硬链接的区别 http://os.51cto.com/art/201911/605267.htm 软连接 文件是小的 只是一个链接 删除和其他处理不影响 原始文件的计数 删除源文件 链接文件立马完蛋 但是可以跨文件挂载点进行连接. 硬链接 增加了innode 的引用计数. 删除时 只要还有一个有链接 文件就还有. 但是不能跨挂载点进行硬链接 软连接 就是 ln -s 硬链接 直接 ln 在 Linux 系统中,一切都是文件,然而为了区分不同类型的事物,我们有了: 普通文件

Linux软链接和硬链接文件

下面是Linux系统软件底层的存储结构,我们将从底层上来去解释Linux系统下的软硬连接文件 <一>: 解释(底层) 硬链接,其实从底层数据上来看, 硬链接其实就是增加了一个目录项.底层对应的inode table.数据区中的值是不变的, 也不会重新创建. 软链接, 其实从底层接上看, 软链接其实就是相当于重新创建了一个文件,, 无论是目录项,inode table,以及数据区都是重新重建的,而这个文件功能比较特殊, 它是用来指向另外一个文件的. <二>:命令的使用 硬链接命令:

linux软链接和硬链接

1.Linux链接概念Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接. 在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号.文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问. QUOTE: ln [options] existingfile newfileln[options] existingfile

Linux 软链接和硬链接的理解与学习

要想弄明白Linux的软链接和硬链接的概念,首先要明白linux是怎么管理文件的. 以下笔记部分内容来自互联网搜索,个人理解加以整合所得. 1. 文件系统 (作者:Vamei 出处:http://www.cnblogs.com/vamei/archive/2012/09/09/2676792.html) 文件被组织到文件系统(file system)中,通常会成为一个树状(tree)结构.Linux有一个根目录/, 也就是树状结构的最顶端.这个树的分叉的最末端都代表一个文件,而这个树的分叉处则是

linux 软连接和硬链接的区别

linux 软连接和硬链接的区别 2011-06-27  zale的图...   阅 3345  转 23 转藏到我的图书馆 微信分享: 4点不同 : (1)软连接可以 跨文件系统 ,硬连接不可以 .实践的方法就是用共享文件把windows下的 aa.txt文本文档连接到linux下/root目录 下 bb,cc . ln -s aa.txt /root/bb 连接成功 .ln aa.txt /root/bb 失败 .(2)关于 I节点的问题 .硬连接不管有多少个,都指向的是同一个I节点,会把

第三章 Linux 软链接与硬链接

Linux 软链接与硬链接 通过实验加深理解 [[email protected]]$ touch f1          #创建一个测试文件f1 [[email protected]]$ ln f1 f2          #创建f1的一个 硬连接   文件f2 [[email protected]]$ ln -s f1 f3       #创建f1的一个 符号连接 文件f3  即软链接 [[email protected]]$ ls -li            # -i参数显示文件的ino

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

ln命令 该命令在文件之间创建链接.这种操作实际上是给系统中已有的某个文件指定另外一个可用于访问它的名称.对于这个新的文件名,我们可以为之指定不同的访问权限,以控制对信息的共享和安全性的问题. 如果链接指向目录,用户就可以利用该链接直接进入被链接的目录而不用打一大堆的路径名.而且,即使我们删除这个链接,也不会破坏原来的目录. 语法:ln [选项] 目标 [链接名] ln [选项] 目标 目录 链接有两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).