Linux的软链接与硬链接

这篇具有很好参考价值的文章主要介绍了Linux的软链接与硬链接。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1,创建硬链接:

ln 默认创建的是硬链接

touch file1
ln filename1 h1
2,创建软链接:
ln -s file1 s1

ls -l 可以查看文件的硬链接数 和 字节数(文件大小)

3,软链接是什么

查看文件和查看它的软链接,内容是一样的,即 cat file1cat s1结果是一样的

可是软链接的大小并不是和原文件一样大,(用ls -l查看其字节数),因为它就是原文件的路径。

同样给file创建软链接file.s:
linux 软连接,操作系统,linux,服务器,嵌入式硬件
此时file.s大小为4字节:
linux 软连接,操作系统,linux,服务器,嵌入式硬件
ln -s ./file file.s2 创建,其大小就是6字节:
linux 软连接,操作系统,linux,服务器,嵌入式硬件
如果把软链接file.soft放到别的目录下,cat file.soft会报错没有该目录。因为软链接的内容就是原文件的目录,在别的文件夹下,相当于在别的文件夹下面cat ./file,而那个文件夹下面并没有该文件。

windows里某个文件夹的快捷方式无论放在哪里都能打开到那个原文件夹(文件同理)。

Linux下想实现这种功能,那就得用绝对路径了

ln -s 绝对路径 s3

该软链接的大小也变成13字节了:
linux 软连接,操作系统,linux,服务器,嵌入式硬件
注意,~是用户目录的缩写,虽然创建的时候用的它,但是由上面是13字节可以得知,软链接的内容并不是~/file,不然就是6字节了

所以其实软链接就是个特殊的文件,文件的内容是被链接文件的路径(相对路径还是绝对路径看自己咋创建的)

但是查看它的时候,却是被链接文件的内容。

4,软链接文件的权限

linux 软连接,操作系统,linux,服务器,嵌入式硬件
原文件的权限如上,而软链接文件是全开放的rwxrwxrwx,这个只是代表软链接文件自己的权限(任何人都可以访问这个软链接),但是原文件的权限还是原先的-rw-rw-r–,至于能不能通过这个软链接来对原文件进行读写和修改,还得看源文件的权限(硬链接的权限则和原文件一样)

5,硬链接是什么

给file创建一个硬链接file.h,用ls -l查看硬链接计数,文件file的硬链接计数起始值是1,现在变成2了

创建n个硬链接,那么硬链接计数是n+1;

对一个硬链接文件进行修改,其它文件也跟着变————这个在windows系统里没有类似机制

这个其实像指针,即多个指针指向同一个变量,可以通过指针来修改该变量。

其实就是文件系统里的inode,用stat 文件名可以查看inode,就是个编号,然后每个硬链接的inode一模一样,都是原文件的inode号:
linux 软连接,操作系统,linux,服务器,嵌入式硬件
所有修改某个硬链接,那直接是找到对应的inode去修改的

硬链接的文件权限,也就和原文件一模一样,删除一个硬链接rm file.h -r只是硬链接计数-1,只有当硬链接计数为0时,这个文件才能被删除

软链接的inode则和原文件不同,因为它是不同的文件
linux 软连接,操作系统,linux,服务器,嵌入式硬件

关于inode:

inode(index node)是一个存储文件或目录元数据的数据结构。每个文件或目录在文件系统中都有一个唯一的inode,该inode包含了文件或目录的属性信息和指向文件数据块的指针:
当我们访问一个文件时,操作系统会根据文件路径找到相应的inode,然后通过inode中的指针找到文件的实际数据块。inode的存在可以提高文件系统的性能,因为它可以减少文件路径的查找时间,同时也方便了文件的管理和操作。
注意:inode只存储文件和目录的元数据信息,而不包含文件的实际内容。文件的实际内容存储在数据块中,inode中的指针指向这些数据块

6,做个小实验

vi创建一个文件file,写上hello word

对file创建一个软链接s1和两个硬链接h1、h2,然后把file移动到别的目录下,可以看到软链接那有警报,闪烁:
linux 软连接,操作系统,linux,服务器,嵌入式硬件
软链接的文件类型是l,这个是链接的意思,而硬连接的文件类型是-,即文件(ASCII或二进制):
linux 软连接,操作系统,linux,服务器,嵌入式硬件
具体的可以用file h1查看,是ASCII,如下:
linux 软连接,操作系统,linux,服务器,嵌入式硬件
此时file不在当前目录下了,那像前面说的,cat s1肯定会报错,因为s1就是文件的路径,相当于cat 路径,然后vim 打开s1,会创建新文件s1.。。。就像这个文件被删了一样。
linux 软连接,操作系统,linux,服务器,嵌入式硬件
但是查看硬链接却可以:
linux 软连接,操作系统,linux,服务器,嵌入式硬件
因为查看硬链接h1,就是查看inode=138896292指向的文件。这个时候用vim打开h1,查看到的也是和file一样的内容,是hello word,h1文件的大小也和file一样是11字节,因为他们三个都是指向同一个文件。

删除原文件file或移动,其软链接就会失效,因为该路径指向的文件不存在了;删除软链接则就是删除一个目录文件,对原文件毫无影响;

删除原文件file则会使得硬连接数-1,h1和h2依然能查看原文件内容(因为这三个是平等的,都是同一个inode),删除硬链接同理。
linux 软连接,操作系统,linux,服务器,嵌入式硬件

总结

在Linux系统中,硬连接和软连接(也称为符号链接或软链接)都是文件系统中用于创建链接的方式,但它们有一些区别。

硬连接(Hard Link):

  1. 硬连接是通过在文件系统中创建一个新的目录项,将其链接到已存在的文件上来实现的。

  2. 硬连接与原始文件共享相同的inode,它们在文件系统中被视为相同的文件

  3. 当任何一个硬链接被删除时,原始文件和其他的硬链接都不会受到影响,只是硬链接计数-1。只有当所有的硬链接和原始文件都被删除时,文件的内容才会被释放。原文件删除也是硬链接计数-1,硬链接和原文件是等价的,都是同一个inode。

    它们实际上是同一个文件,只是文件名和路径不同。因此,对硬链接的修改会影响到原文件。

软连接(Symbolic Link):

  1. 软连接是创建一个指向目标文件或目录的特殊文件,它包含了目标文件的路径信息。
  2. 软连接与原始文件有不同的inode,它们在文件系统中被视为不同的文件。
  3. 当原始文件被删除或者移动时,软连接仍然存在,但是指向的目标文件将变为失效状态(因为软链接是原文件路径,此时会显示文件不存在)。删除软链接就是删除一个目录文件,对原文件毫无影响,它也没有软链接计数。

总结: 硬连接是文件系统中对同一个文件的多个链接,它们共享相同的inode和数据块,删除一个链接并不影响其他链接;而软连接是一个特殊的文件,它指向目标文件或目录的路径,删除或移动原始文件会导致软连接失效。硬连接不能跨越文件系统,而软连接可以跨越文件系统(一般一台linux是一个文件系统)。

注意文件权限:
硬链接的文件权限和原文件一样(毕竟共享同一个inode),而软链接则不是,它有自己的权限且默认是-rwxrwxrwx。通过软链接读的时候,权限是依据原文件的权限是否可读,而不是软链接文件本身(其本身是rwx全开)

问题:为什么有软链接了(快捷方式)还需要硬链接?

虽然软链接在某些方面更灵活,但硬链接也有其独特的优势。相对于软链接,硬链接占用的磁盘空间更小,因为它们共享相同的inode。另外,硬链接对于备份和恢复数据更方便,因为它们不会丢失或失效,即使目标文件或目录被删除文章来源地址https://www.toymoban.com/news/detail-726834.html

到了这里,关于Linux的软链接与硬链接的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Linux文件(系统)IO(含动静态库的链接操作)

    fopen打开文件,fclose关闭文件 fwrite操作(写文件) fwrite函数从 ptr 里将 nitems 个大小为 size 字节的数据写进定 stream 里 hello_w.c 文件 这里我们将会在此路径得到一个写有 5 行 hello fopen 的 myfile.txt 文件,如下gif: fread操作(写文件) fread 不会在字符串末尾添加 null 终止符( \\0

    2024年04月14日
    浏览(48)
  • 8- Linux操作系统 ssh远程连接

    一、简介 ssh(secure shell,安全外壳协议),该协议有2个常用的作用: 远程连接 、远程文件传输。 协议使用 端口 号: 默认是22。 可以是被修改的,如果需要修改,则需要修改ssh服务的配置文件:   端口号可以修改,但是得注意2个事项: a. 注意范围,端口范围是从0-65535;

    2024年02月08日
    浏览(62)
  • EditPlus连接Linux系统远程操作文件

    EditPlus是一套功能强大的文本编辑器! 1.File -FTP-FTP Settings; 2.Add-Description-FTP server-Username-Password-Subdirectory-Advanced Options 注意:这里的Subdirectory设置的是以后上传文件的默认目录 3.Encryption-Port-Use UTF-8 file names-OK-OK 连接成功! 选择目录之后就可以对Linux系统的文件进行操作。 也

    2024年02月14日
    浏览(54)
  • 什么是Linux,如何在Windows操作系统下搭建Linux环境,远程连接Linux系统

    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux操作系统诞生于1991年10月5日(这是第一次正式向外公布时间)。严格

    2024年02月14日
    浏览(65)
  • 【Linux】软连接和硬链接:创建、管理和解除链接的操作

    什么是软链接 软链接(Symbolic Link),也称为符号链接,是包含了源文件位置信息的特殊文件。它的作用是间接指向一个文件或目录。如果软链接的源文件被删除或移动了,软链接就打不开了。 什么是硬链接 硬链接(Hard Link)指通过索引节点来进行链接。在Linux系统中,每个文件都有一

    2024年02月05日
    浏览(39)
  • git clone连接超时,如何解决?(操作系统-linux)

    解决方案有以下几种: 使用代理,如果您正在使用公司或学校网络,可能需要设置代理才能访问外部网络。 检查网络连接是否正常,确保您的电脑能够正常访问互联网。 尝试使用 HTTPS 而不是 SSH 连接,因为某些网络可能会阻止 SSH 连接。 尝试使用不同的 git 客户端,如 GitKr

    2024年02月12日
    浏览(45)
  • 如何使用FinalShell远程连接工具优雅的远程连接Linux操作系统的服务器

            随着互联网的发展,越来越多的人需要远程访问和管理远程服务器或计算机。远程连接工具应运而生,以满足人们的远程访问需求。远程连接工具可以让用户远程登录到其他计算机或服务器,并执行各种操作,而无需身处物理位置。这极大地便利了用户,节省了时

    2024年02月03日
    浏览(70)
  • 【Linux操作系统】探秘Linux奥秘:Linux 操作系统的解密与实战

    🌈个人主页: Sarapines Programmer 🔥 系列专栏: 《操作系统实验室》 🔖诗赋清音:柳垂轻絮拂人衣,心随风舞梦飞。 山川湖海皆可涉,勇者征途逐星辉。 目录 🪐1 初识Linux OS 🪐2. Linux 操作系统的解密与实战 🌍1. 实验目的 🌍2. 实验准备 🌍3. 实验内容 🌍4. 实验心得 📝总

    2024年02月03日
    浏览(53)
  • 【Linux操作系统】【综合实验一 Linux操作基础】【浅试Linux命令】

    Linux均以文件形式存在 本文出现的命令浅尝辄止,具体使用参考文档即可 解决一个任务的方法很多,本文仅浅试了一些简单的命令 要求掌握Linux基础操作,熟悉Linux行界面,并 明白操作的原理以及目的(难) ;熟悉Linux系统环境。 通过这个第一阶段实验,要求掌握以下操作

    2023年04月08日
    浏览(101)
  • 【Linux操作系统】探秘Linux奥秘:操作系统的入门与实战

    🌈个人主页: Sarapines Programmer 🔥 系列专栏: 《操作系统实验室》 🔖诗赋清音:柳垂轻絮拂人衣,心随风舞梦飞。 山川湖海皆可涉,勇者征途逐星辉。 目录 🪐1 初识Linux OS 🪐2 操作系统的入门与实战 🌍1. 实验目的 🌍2. 实验准备 🌍3. 实验内容 🌍4. 实验心得 📝总结

    2024年02月04日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包