深入详解Linux 软链接 (符号链接)/ 硬链接

0X00 什么是链接文件

Linux 中的链接文件就相当于是 Windows 中的快捷方式,通过链接文件可以访问到链接指向的源文件。但是 Linux 下的链接文件和 Windows 中的快捷方式还是有一定的区别。Linux 中有两种链接文件硬链接和软连接也称为符号链接
在介绍链接文件之前先要介绍一下 Linux 文件系统中的 inode
inode 是 Linux 文件系统中文件的唯一定位器,每一个文件都有一个 inode,也是唯一的,每一个 inode 唯一对应一个文件。

还要熟悉一下指针的问题,如果学习过 C/C++ 的话理解起来会很轻松
计算机中所有的数据都是保存在磁盘里的,使用的时候会读取到内存中,而磁盘和内存都是一块一块的地方,我们用地址来找到数据的具体存放位置。保存了文件或者数据存放地址的物体(通常是变量)就称为指针。
我们在 Linux 的操作界面看到的文件,都是一个指针,他们指向磁盘的某个具体位置。这样我们每次点开文件的时候,系统就可以在磁盘对应的位置打开我们需要的文件。

0X01 硬链接

硬链接就是指向磁盘中具体位置的指针。如果我们创建一个文件,那么就会在磁盘中分配一块位置用来存储这个文件,并且创建一个指针方便我们找到这个文件。然后我们创建一个这个文件的硬链接,就相当于又创建了一个指向磁盘中存放文件的位置的指针,所以就算我们删除了之前创建的文件(其实就是一个指针),文件本身也不会被删除,因为还是有一个指针是指向文件存储位置的,所以我们还是可以通过后来创建的硬链接来访问到原来的文件。
0X02 软链接——符号链接

软连接可以大致理解成指向指针的指针。如果我们创建一个文件,并且创建了这个文件的一个软连接,那么如果删除了原来的文件,那这个文件就真的找不到了。因为软连接只是指向之前(指向具体文件位置)的指针,所以那个软连接就指向一片空白区域了,以前存在的文件也找不到了。就好像我们在 Windows 中卸载了一个软件,但是桌面上的快捷方式还可能存在,现在我们打开那个快捷方式是不能访问到软件的,因为已经被我们删除了。
0X03 操作演示

首先我这里有一个hehe.tar.gz的文件,我们查看一下它的 inode 是 33515290。然后创建一个硬链接名为heihei.tar.gz,再查看这两个文件的 inode,发现两个文件的 inode 是一样的。再创建一个软连接名为haha.tar.gz,继续查看文件 inode。可以看到系统给haha.tar.gz分配了一个新的 inode,并且 ls 的时候有个箭头显示了指向什么文件。
ls -i 可以显示文件的 inode


0X04 软硬链接对比

硬链接:

不分配新的 inode
不可以在不同的文件系统之间链接
只有 root 才能创建目录的硬链接
只能源于存在的文件
软链接:

分配新的 inode
不受文件系统的限制
指向源文件位置的标识
可以链向不存在的文件

时间: 2024-10-02 13:09:03

深入详解Linux 软链接 (符号链接)/ 硬链接的相关文章

详解linux软连接和硬链接_Linux

本篇文章详细介绍了linux软连接和硬链接,废话不多说,接着往下看把. 一 链接文件 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接. [软连接] 另外一种连接称之为符号连接(Symbolic Link),也叫软连接.软链接文件有类似于Windows的快捷方式.它实际上是一个特殊的文件.在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息. 链接文件甚至可以链接不存在的文件,这就产

linux下如何创建和删除软链接和硬链接

在Linux系统中,内核为每一个新创建的文件分配一个Inode(索引结点),每个文件都有一个惟一的inode号.文件属性保存在索引结点里,在访问文件时,索引结点被复制到内存在,从而实现文件的快速访问. 链接是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法.Linux中包括两种链接:硬链接(Hard Link)和软链接(Soft Link),软链接又称为符号链接(Symbolic link).符号连接相当于Windows下的快捷方式. 一.硬链接 硬链接说白了是一个指针,指向文件索

Windows 的快捷方式,符号链接,软链接和硬链接

在我之前的印象中,Linux 下面的 ln 命令好像类似于 Windows 下面的快捷方式,但是在接触了 Windows 下面的 mklink 命令后,发现 Windows 下面的链接还是很强大的 Linux 下面的 ln 命令 linux 下面的 ln 命令还是很强大的,可以创建软链接和硬链接,使用方式如下: ln -s source dist        # 建立软连接 ln source dist            # 建立硬连接 关于 Linux 下面的软链和硬链,可以看看这篇文章

linux中软链接与硬链接有什么区别?

下面是我个人在学习linux/unix环境编程中总结的软链接与硬链接的区别,仅供参考 软链接可以跨文件系统,硬链接则不可以. 硬链接和源文件共享一个inode,这说明本质上还是同一个文件,而软链接与源文件拥有各自的inode,说明他们是独立的不同的文件. 再查看文件属性时(ls -l),软链接标明的时链接文件,而硬链接则没有标出,因为本质上硬链接和源文件是对等的. inode节点中的链接指针数不同,创建硬链接时会使源文件的inode节点中的链接指针的数加一,而软链接不会. 文件大小不同,硬链接文

Linux软连接和硬链接

Linux链接概念 链接--是一种在共享文件和访问它的用户的若干目录项之间建立联系的一种方法. Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接. 硬链接与软链接是 Linux 文件系统中的一个重要概念,其涉及文件系统中的索引节点 (index node 又称 inode),而索引节点对象是 Linux 虚拟文件系统 (VFS) 的四个基本概念之一. 通过剖析硬链接与软链接的联系与区别,我们可更好的了

详解Linux系统中md5sum命令的用法

  这篇文章主要介绍了详解Linux系统中md5sum命令的用法,用来处理MD5验证的相关操作,需要的朋友可以参考下 MD5算法常常被用来验证网络文件传输的完整性,防止文件被人篡改.MD5全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位(十六进制长度就是32位)的"指纹"(或称"报文摘要"),不同的文件产生相 同的报文摘要的可能性是非常非常之小的. 在linux或Unix上,

详解Linux与Unix系统的区别与联系

详解Linux与Unix系统的区别与联系 区别和联系 Linux和UNIX的最大的区别是,前者是开发源代码的自由软件,而后者是对源代码实行知识产权保护的传统商业软件.这应该是他们最大的不同,这种不同体现在用户对前者有很高的自主权,而对后者却只能去被动的适应:这种不同还表现在前者的开发是处在一个完全开放的环境之中,而后者的开发完全是处在一个黑箱之中,只有相关的开发人员才能够接触的产品的原型. Linux 的源头要追溯到最古老的UNIX.1969年,Bell实验室的Ken Thompson开始利用一

Linux进程上下文切换过程context_switch详解--Linux进程的管理与调度(二十一)【转】

转自:http://blog.csdn.net/gatieme/article/details/51872659 版权声明:本文为博主原创文章 && 转载请著名出处 @ http://blog.csdn.net/gatieme   目录(?)[-] 前景回顾 1 Linux的调度器组成 2 调度工作 进程上下文 1 进程上下文的概念 2 上下文切换 context_switch进程上下文切换 1 context_switch完全注释 2 prepare_arch_switch切换前的准备工

Linux下的软链接和硬链接

1.Linux链接概念 Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link).默认情况下,ln命令产生硬链接. [硬连接] 硬连接指通过索引节点来进行连接.在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index).在Linux中,多个文件名指向同一索引节点是存在的.一般这种连接就是硬连接.硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以