linux中软链接与硬链接的区别

写在前面:在介绍硬链接和软链接之前,首先接受下硬盘相关的知识,主要是了解下 inode 。


Linux 把每个文件的权限与属性记录在 inode("索引节点:index node ") 中,而且每个文件占用一个独立的 inode 表格,该表格的默认大小为 128 字节。

里面记录着如下信息 :

  • 文件的访问权限(read、write、execute)
  • 该文件的所有者与所属组(owner、group)
  • 该文件的大小(size)
  • 该文件的创建或内容修改时间(ctime)
  • 该文件的最后一次访问时间(atime)
  • 该文件的修改时间(mtime)
  • 文件的特殊权限(SUID、SGID、SBIT)
  • 该文件的真实数据地址(point)。
    在 Linux 系统中 ,inode 号才是文件的唯一标识而非文件名。文件名只是为了方便人们的记忆和适用。
ls -i     ###查看文件inode号

在这里插入图片描述
在 Windows 系统中,快捷方式是指向原始文件的一个链接文件。可以让用户从不同的位置来访问原始的文件;原文件一旦被删除或剪切到其他地方后,会导致链接文件失效。

但是在 Linux 系统中,"快捷方式"就不太一样 。在 Linux 系统存在硬链接和软链接两种文件。

硬链接(hard link) : 可以将它理解为一个 “指向原始文件 inode 的指针”,系统不为它分配独立的 inode 和 文件。所以,硬链接文件与原始文件其实是同一个文件,只是名字不同。我们每添加一个硬链接,该文件的 innode 连接数就会增加 1 ; 而且只有当该文件的 inode 连接数为 0 时,才算彻底被将它删除。因此即便删除原始文件,依然可以通过硬链接文件来访问。需要注意的是,我们不能跨分区对文件进行链接。

ln fileName newFileName      ###创建硬链接

linux中软链接与硬链接的区别_第1张图片

  • fileName 和 newFileName 都指向同一个文件,因此,无论你编辑哪一个文件,另一个文件也会做相应的改变。无论删除哪个文件,另一个文件也是存在的。

  • 在 Linux 系统中,文件名本身就相当于硬链接,文件名仅仅是一个指针。

  • 硬链接文件有两个限制
      1)、不允许给目录创建硬链接;
      2)、只有在同一文件系统中的文件之间才能创建链接。

软链接: 相当于windows的快捷方式。仅仅包括所含链接文件的路径名字,一旦原文件被删除或位置被移动,软链接失效。

  • 软链接又叫符号链接, 这个文件包含了另一个文件的路径名。可以是任意文件或目录, 可以链接不同文件系统的文件。
  • 链接文件甚至可以链接不存在的文件,这就产生一般称之为"断链"的问题(或曰“现象"),链接文件甚至可以循环链接自己。类似于编程语言中的递归。
    linux中软链接与硬链接的区别_第2张图片
    原文章请点击这里

你可能感兴趣的:(linux,linux基本命令,运维命令,linux,1024程序员节)