linux中软连接和硬链接的区别

news/2024/10/22 12:24:38/
  1. 定义与概念

    • 硬链接(Hard Link):硬链接是文件系统中的一个概念,它直接指向文件系统中的物理数据块。可以把硬链接看作是原始文件的一个别名,它们共享相同的inode(索引节点)编号。在Linux文件系统中,文件的inode存储了文件的元数据,如文件的所有者、权限、大小和数据块位置等信息。
    • 软连接(Symbolic Link),也称为符号链接:软连接是一个特殊类型的文件,它包含了指向另一个文件或目录的路径。它类似于Windows系统中的快捷方式,只是一个指向实际文件或目录位置的指针。
  2. 创建方式

    • 硬链接:使用ln命令创建硬链接。例如,要为文件/home/user/file.txt创建一个硬链接/home/user/file_link.txt,可以使用命令ln /home/user/file.txt /home/user/file_link.txt
    • 软连接:同样使用ln命令,但需要添加-s选项来创建软连接。例如,要为文件/home/user/file.txt创建一个软连接/home/user/file_symlink.txt,可以使用命令ln -s /home/user/file.txt /home/user/file_symlink.txt
  3. inode编号

    • 硬链接:硬链接和原始文件具有相同的inode编号。例如,使用ls -i命令查看文件和它的硬链接,可以发现它们的inode编号是一样的。这意味着它们在文件系统的存储层面是同一个实体,只是有不同的文件名。
    • 软连接:软连接有自己独立的inode编号,它所指向的目标文件有另外的inode编号。当使用ls -i查看时,可以明显区分软连接和它指向的文件。
  4. 文件内容与大小

    • 硬链接:硬链接的文件内容和大小与原始文件完全相同,因为它们实际上是同一个文件在文件系统中的不同引用。对硬链接文件的修改会直接反映在原始文件上,反之亦然。
    • 软连接:软连接文件本身很小,它的大小通常是指向目标文件路径字符串的长度。软连接文件的内容就是目标文件的路径。例如,如果目标文件路径是/home/user/file.txt,软连接文件内容就是这个路径字符串,并且文件大小就是这个字符串的长度。
  5. 文件删除行为

    • 硬链接:只要还有一个硬链接存在,文件的数据块就不会被删除。也就是说,即使删除了原始文件,只要有硬链接指向该文件的数据块,这些数据仍然可以通过硬链接访问。例如,有文件A和它的硬链接B,删除A后,B仍然可以正常访问和使用。
    • 软连接:如果删除了软连接指向的目标文件,软连接就会失效。当尝试访问失效的软连接时,会得到一个错误提示,如“文件不存在”。例如,软连接C指向文件D,删除D后,C就无法正常访问D的内容了。
  6. 跨文件系统支持

    • 硬链接:硬链接通常只能在同一个文件系统中创建。因为不同的文件系统有不同的inode结构和管理方式,所以无法跨文件系统创建硬链接。
    • 软连接:软连接可以跨文件系统创建,因为它只是存储了目标文件的路径,不受文件系统结构差异的限制。例如,可以在一个挂载的外部存储设备(如USB硬盘)上创建一个软连接,指向本地文件系统中的文件。

http://www.ppmy.cn/news/1538985.html

相关文章

leetcode二叉树(三)-二叉树的迭代遍历

题目 144.二叉树的前序遍历 145.二叉树的后序遍历 94.二叉树的中序遍历 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例 1: 输入:root [1,null,2,3] 输出:[1,2,3] 解释: 示例 2: …

从零开始学英语:三个月学习计划(每天30分钟到1小时)

导语 对于工作繁忙的上班族,利用每天30分钟到1小时进行英语学习是非常现实的。以下是一个适合这样的时间安排的学习计划,旨在帮助你在三个月内打下英语基础,提高听说读写能力。 第一月:基础入门 目标:掌握基本词汇和…

光路科技以技术创新为驱动,打造创新型企业新标杆

近日,深圳市光路在线科技有限公司(光路科技)凭借其出色的创新能力和市场表现,荣获深圳市中小企业服务局颁发的“创新型中小企业”称号。这一荣誉标志着光路科技在推动行业发展和技术进步方面取得了显著成就。 光路科技自2008年成立…

加固与脱壳07 - 修改源码脱壳

​上文我们讨论了该如何脱壳,现在就开始实现吧。 本文不介绍如何编译源码,这块内容之前已经单独发过了,可以使用虚拟机或者 WSL,WSL体验要好些,虚拟机更方便。 看开源项目: https://github.com/dqzg12300…

Golang | Leetcode Golang题解之第462题最小操作次数使数组元素相等II

题目&#xff1a; 题解&#xff1a; func partition(a []int, l, r int) int {x : a[r]i : l - 1for j : l; j < r; j {if a[j] < x {ia[i], a[j] a[j], a[i]}}a[i1], a[r] a[r], a[i1]return i 1 }func randomPartition(a []int, l, r int) int {i : rand.Intn(r-l1…

【进阶OpenCV】 (12)--人脸检测识别

文章目录 人脸识别一、获取分类器二、代码实现1. 图片预处理2. 加载人脸检测分类器3. 检测人脸4. 标注人脸 总结 人脸识别 要实现人脸识别首先要判断当前图像中是否出现了人脸&#xff0c;这就是人脸检测。只有检测到图像中出现了人脸&#xff0c;才能据此判断这个人到底是谁。…

QD1-P23 CSS 基础选择器

本节学习&#xff1a;CSS 基础选择器&#xff08;5种&#xff09; 本节视频 https://www.bilibili.com/video/BV1n64y1U7oj?p23 基础选择器是 CSS 中最常用的选择器类型&#xff0c;它们用于选择 HTML 文档中的元素。以下是基础选择器的列表以及它们的优先级&#xff08;权重…

Redis 列表(List)

Redis 列表(List) Redis 是一个开源的&#xff0c;内存中的数据结构存储系统&#xff0c;可以用作数据库、缓存和消息中介。它支持多种类型的数据结构&#xff0c;包括字符串、哈希、列表、集合、有序集合等。本文将重点介绍 Redis 中的列表&#xff08;List&#xff09;数据结…