首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

链接和硬链接

linux基础 要理解链接,首先要理解以下inode inode 理解inode,要从文件储存说起。 文件储存在硬盘上,硬盘的最小存储单位叫做”扇区”(Sector)。...链接数,即有多少文件名指向这个inode 文件数据block的位置 硬链接链接是指多个文件指向同一个inode,相当于是文件的副本,删除其中任意一个文件并不会删除文件实体,只有删除了所有源文件和所有对应的硬链接文件才会删除文件实体...看起来是不是很像c++里的共享指针 连接 链接是指生成一个快捷方式,新建一个inode,inode指向源文件路径,删除了源文件,链接文件依然存在,只是不能打开文件了,链接文件和源文件类型不同

1.9K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    链接和硬链接

    2 深入探析链接和硬链接本质 链接相当于Windows下的快捷方式,修改链接文件,源文件内容也会改变,修改源文件内容,链接文件内容随之改变。删除链接不影响源文件,删除源文件链接文件失效。...修改硬链接文件,源文件内容也会改变,修改源文件内容,硬链接文件内容随之改变。删除硬链接文件,源文件无影响;删除源文件,硬链接文件无影响。 那么链接和硬链接这些特性是怎么来的呢?...链接是指向文件名的 硬链接是指向inode的 一个分区就是一个文件系统,链接可以跨分区而硬链接不可以跨分区。 这是因为不同分区可以有相同的文件名,但是inode唯一标识一块block。...硬链接是指向inode编号的,假如说我现在有一个1.txt的inode编号为12345,该文件在磁盘分区1上面。...我们知道,在文件系统中,inode block中有一个指针,链接的指针就是指向源文件的文件名的。 实际上,在每个目录中都有两个隐藏文件,.是当前目录的硬链接,..是上一级目录的硬链接

    12310

    链接和硬链接

    Linux下的链接其实就是Windows下的快捷方式。...在Linux下,我们使用ln命令创建链接。 ? 链接创建以后颜色就是青色的。我们打开它可以看到和原来的文件HelloWorld.c的内容是一样的。我们使用ls命令来具体看一看hello的属性。...当我们在创建链接的时候,最好使用绝对路径,这样就不会出错了。 ? 创建链接的命令格式如下:这样创建的链接是可以移动的。当你移动链接到别的目录下,仍旧能够使用。...ln -s 原始文件绝对路径 链接文件绝对路径 链接是快捷方式,它相当于指向该文件的指针。通过它可以访问原始文件。链接文件的大小表示的是原始文件名的长度。...当我们删除这个链接的时候,原始文件并不会被删除。 硬链接 在存储系统上,一个文件或目录包含在一个块 集合中。有关文件的信息包含在一个 inode 中。

    1.3K20

    链接和硬链接

    链接-符号链接:相当于windows的快捷方式。 创建命令: ln s 文件名 链接的名字 ln-link s-soft 特点: 1.在linux中,链接文件的颜色为浅蓝色。...2.链接的大小为原文件的文件名大小,即路径长度。 3.链接仅可在当前路径下使用,即和原文件在同一目录下。创建时最好给出原文件的绝对路径。 4.目录也可创建链接,方法同上。...如上述的图片中,在这样形式的创建方式下如果将同一级目录下的链接移动到其他目录下(与原文件不在同一个目录下),链接会发生失效。...所以,这样的创建方式是有一定缺陷的,最好的创建方式,是给出整个原文件的绝对路径,而不是相对路径,这样就不会发生失效,即使链接和原文件不在同一级目录下。...此外,如果原文件被删除,那么链接也会发生失效,毕竟它只是一个快捷方式而已。 硬链接:在linux上,一以切皆文件。那么如何给出文件名,找到其在磁盘上的对应位置呢?

    2.1K10

    Linux硬链接链接

    链接链接链接是通过inode进行的链接。...硬链接只能在同一个文件系统的文件中间进行链接,不能对目录进行创建。如果删除硬链接对应的源文件,则硬链接文件仍然存在,而且保存了原有的内容,这样可以防止因为误操作而删除文件的作用。...链接也叫符号链接,是文件索引的索引,也就是说,文件A和文件B的inode号码虽然不一样,但是文件A的内容是文件B的路径。读取文件A时,系统会自动将访问者导向文件B。...文件A称为文件B的链接。这意味着,文件A依赖于文件B而存在,如果删除了文件B,打开文件A就会报错:“No such file or directory”。...这是链接与硬链接最大的不同:文件A指向文件B的文件名,而不是文件B的inode号码,文件B的inode链接数不会因此发生变化。可以使用ln -s 源文件或目录 目标文件或目录 命令建立链接

    8.7K30

    链接 vs. 硬链接

    链接的作用之一也是方便文件的管理,比如原文件的路径比较复杂,我们可以在简单的路径下创建一个链接,这样比较方便用户访问。...但是和硬链接不同的是,一旦原文件被删除,那么链接就成了一个“死链接”,指向了一个不存在的文件。 ? 链接可以用命令 ln -s [源文件名或目录] [链接文件名] 来进行创建。...和硬链接不同之处在于,对不存在的文件也可以创建链接,可以跨文件系统,对文件或者目录都可以创建链接。 举一个例子,比如我们为 myfile.txt 创建一个链接 softlink。...通过上面的实验验证,链接的特点如下: 1) 链接和其所指向的文件具有不同的 inode,并且其数据块存储的内容为其所指向文件的路径 2) 创建链接,其指向文件的硬链接次数不会增加 3) 删除链接并不影响原文件...,但删掉原文件,链接会成为一个“死”链接 4) 链接可以指向文件,也可以指向目录 5) 链接可以指向不存在的文件或目录 6) 链接可以跨文件系统创建 最后 不管用链接还是硬链接,都不会将原来的文件复制一份

    1.2K30

    linux链接和硬链接

    修改其中一个,硬连接指向的是节点(inode),而连接指向的是路径(path) 链接文件 链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。...链接文件甚至可以链接不存在的文件,这就产生一般称之为"断链"的问题(或曰“现象"),链接文件甚至可以循环链接自己。类似于编程语言中的递归。...链接有两种方式,链接和硬链接。...链接文件甚至可以链接不存在的文件,这就产生一般称之为"断链"的问题(或曰“现象"),链接文件甚至可以循环链接自己。类似于编程语言中的递归。   ...在Linux的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。     在Linux中,多个文件名指向同一索引节点是存在的。

    8.6K50

    Linux 链接与硬链接

    创建链接链接是一个指向另一个文件或目录的引用,类似于Windows系统中的快捷方式。...ln -s [目标文件路径] [链接文件名]例如,要在当前目录下创建一个名为link_file的链接,指向/home/user/desktop/link,可以执行以下命令ln -s /home/user.../desktop/link link_file这将创建一个链接link_file,它实际上是指向/home/user/desktop/link的引用。...删除链接rm [链接文件名]链接与硬链接区别链接就像是创建了一个快捷方式,指向另一个文件或目录。如果原始文件被删除或移动,链接失效,因为它只是一个路径的引用。...可以跨越不同文件系统,例如/home/user,另一个在/mnt/data有一个特殊的标志,表示它是一个链接文件。硬链接就像是创建了原始文件的副本,但实际上它们都指向相同的数据块。

    26410

    C语言】编译和链接

    一、翻译环境和运行环境 在c语言的实现中,存在两个环境 翻译环境:在这个环境中源代码被转换成可执行的二进制指令 运行环境:实际执行代码 二、翻译环境 翻译由编译和链接两个过程组成 编译又可以分为预处理...、编译、汇编三个过程 一个c语言的项目一般是由多个.c文件一起构建的,多个.c文件通过如下步骤生成可执行程序: ①多个.c文件单独经过编译器,编译处理生成对应的目标文件 ②多个目标文件和链接库一起经过链接器处理生成最终的可执行程序...③链接库是指运行时库(支持程序运行的基本函数集合)或者第三方库 注意:在Windows环境下目标文件的后缀是.obj,Linux环境下的目标文件的后缀是.o 以下就是编译与链接的过程: 1、...它通常包括声明和类型的匹配,类型的转换等,这个阶段会报告错误的语法信息 3、汇编 然后接下来一步是进入汇编器,将汇编指令转换为机器可执行的指令,根据汇编指令和机器指令的对照表一一翻译,不做指令优化 4、链接...然后就是链接链接就是把一堆文件链接在一起生成可执行程序,它的过程主要包括:地址和空间的分配、符号决议、重定位等 重定位:当我们使用多个.c文件生成一个可执行程序的时候,由于编译的时候是每个文件单独编译的

    7910

    2.21 链接文件

    链接介绍 链接文件分为硬链接文件(hard link)和链接文件(symbolic link),两种链接的本质区别在于inode。...链接文件:是建立一个独立的文件,当读取这个链接文件时,它会把读取的行为转发到该文件所链接的文件上。做链接尽量使用绝对路径。...链接文件的大小适合路径是有关系的,路径越长,那这个链接文件越大 链接优势 链接就像是windows中的快捷方式,可以很大程度的节省磁盘空间 案例分析 比如要找一个文件,必须要在/tmp/123...方法二:给/root/123/1.txt做一个链接 ln -s创建链接 ln -s 源文件 链接文件 [root@hf-01 ~]# ls 11.txt 123 234 2.txt 33....总结 命令ln(link) 格式:ln【-s】 【来源文件】【目的文件】 -s 建立链接,不加-s建立硬链接

    76420

    centos 删除链接(centos路由)

    添加连接 连接,为某一个文件在另外一个位置建立一个同步的连接 在此处创建连接后,访问到此处的连接,就会定位到连接指向的位置。...具体用法是:ln -s 源文件 目标文件 会针对源文件创建一个连接(目标文件),链接到源文件。 别搞反了。前面的源文件,是需要在当前位置能访问到的文件。后面的是目标文件,是新创建出来的链接。...例如 ln -s /home/source_file source_file_link 此时在当前窗口 cd source_file_link,就会到达 /home/source_file 删除连接...删除时,右边不能加 斜杠 例如上面的那个是 rm source_file_link 注意 服务器重启,连接可能会丢失,最好每一个连接都有记录。...发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/129534.html原文链接:https://javaforall.cn

    3.3K20

    链接与硬链接的区别

    由于硬链接是有着相同 inode 号仅文件名不同的文件,因此硬链接存在以下几点特性: 文件有相同的 inode 及 data block; 只能对已存在的文件进行创建; 不能交叉文件系统进行硬链接的创建...; 不能对目录进行创建,只可对文件创建; 删除一个硬链接文件并不影响其他有相同 inode 号的文件。...链接与硬链接不同,若文件用户数据块中存放的内容是另一文件的路径名的指向,则该文件就是连接。链接就是一个普通文件,只是数据块内容有点特殊。链接有着自己的 inode 号以及用户数据块。...因此链接的创建与使用没有类似硬链接的诸多限制: 链接有自己的文件属性及权限等; 可对不存在的文件或目录创建链接链接可交叉文件系统; 链接可对文件或目录创建; 创建链接时,链接计数 i_nlink...不会增加; 删除链接并不影响被指向的文件,但若被指向的原文件被删除,则相关连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的链接)。

    1.7K30

    C语言程序编译和链接

    链接  链接是⼀个复杂的过程,链接的时候需要把⼀堆⽂件链接在⼀起才⽣成可执⾏程序。 链接过程主要包括:地址和空间分配,符号决议和重定位等这些步骤。...链接解决的是⼀个项⽬中多⽂件、多模块之间互相调⽤的问题 如果名字写错 通过地址无法找到。 每个源⽂件都是单独经过编译器处理⽣成对应的⽬标⽂件。...test.c 经过编译器处理⽣成 test.o  add.c 经过编译器处理⽣成add.o  我们在 test.c 的⽂件中使⽤了 add.c ⽂件中的 Add 函数和 g_val 变量。...我们在 test.c ⽂件中每⼀次使⽤ Add 函数和 g_val 的时候必须确切的知道 Add 和 g_val 的地 址,但是由于每个⽂件是单独编译的,在编译器编译 test.c 的时候并不知道 Add...等待最后链接的时候由链接器根据引⽤的符号 Add 在其他模块中查找 Add 函数的地址,然后将 test.c 中所有引⽤到 Add 的指令重新修正,让他们的⽬标地址为真正的 Add 函数的地址,对于全局变量

    10210

    C语言——Q编译和链接

    • 多个目标文件和链接库⼀起经过链接器处理⽣成最终的可执⾏程序; • 链接库是指运⾏时库(它是⽀持程序运⾏的基本函数集合)或者第三⽅库; 如果再把编译器展开成3个过程,那就变成了下⾯的过程...汇编的命令如下: gcc -c test.s -o test.o 4、链接 链接是⼀个复杂的过程,链接的时候需要把⼀堆⽂件链接在⼀起才⽣成可执⾏程序。...链接过程主要包括:地址和空间分配,符号决议和重定位等这些步骤。 链接解决的是⼀个项⽬中多⽂件、多模块之间互相调⽤的问题。...等待最后链接的时候由链接器根据引⽤的符号 Add 在其他模块中查找 Add 函数的地址,然后将 test.c 中所有引⽤到 Add 的指令重新修正,让他们的⽬标地址为真正的 Add 函数的地址,对于全局变量...前⾯我们⾮常简洁的讲解了⼀个C的程序是如何编译和链接,到最终⽣成可执⾏程序的过程,其实很多内部的细节⽆法展开讲解。

    10210
    领券