精华内容
下载资源
问答
  • Linux两种链接

    千次阅读 2018-11-13 14:59:56
    Linux 链接两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link),也就是软链接。默认情况下,ln 命令产生硬链接,ln -s命令产生软链接。   【硬连接】硬连接指通过索引节点来进行连接。...

    Linux 链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link),也就是软链接。默认情况下,ln 命令产生硬链接,ln -s命令产生软链接。

     

    【硬连接】硬连接指通过索引节点来进行连接。在 Linux 的文件系统中,保存在磁盘分区中的文件不管是什么类型都给它分配一个编号,称为索引节点号(Inode Index)。在 Linux 中,多个文件名指向同一索引节点是存在的。一般这种连接就是硬连接。硬连接的作用是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。其原因如上所述,因为对应该目录的索引节点有一个以上的连接。只删除一个连接并不影响索引节点本身和其它的连接,只有当最后一个连接被删除后,文件的数据块及目录的连接才会被释放。也就是说,文件真正删除的条件是与之相关的所有硬连接文件均被删除。

    硬连接有 2 个限制:

    • 不允许给目录创建硬链接
    • 只有在同一文件系统中的文件之间才能创建链接。 即不同硬盘分区上的两个文件之

        不能够建立硬链接。这是因为硬链接是通过结点指向原始文件的,而文件的结点在不       同的文件系统中可能会不同。

     

    【软连接】软链接又叫符号链接,它实际上是一个特殊的文件,有点类似于 Windows 的快捷方式。这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。

    链接文件甚至可以链接不存在的文件,这就产生一般称之为"断链"的问题(或曰“现象",链接

    文件甚至可以循环链接自己。类似于编程语言中的递归。

     

    实验部分:

    一起通过实验加深理解

    [root@foundation101 mnt]# touch file1        #创建一个测试文件 file1
    
    [root@foundation101 mnt]# ln file1 file2       #创建file1的一个硬链接文件file2
    
    [root@foundation101 mnt]# ln -s file1 file2     #创建file1的一个软链接文件file3
    
    [root@foundation101 mnt]# ls -li             # -i 参数显示文件的 inode 节点信息
    
    total 0
    
    404508247 -rw-r--r--. 2 root root 0 Jan 22 23:24 file1
    
    404508247 -rw-r--r--. 2 root root 0 Jan 22 23:24 file2
    
    404508260 lrwxrwxrwx. 1 root root 5 Jan 22 23:24 file3 -> file1

    从上面的结果中可以看出,硬链接文件file2与原文件file1的 inode 节点相同,均为404508247 ,然而软链接文件的 inode 节点不同。

    [root@foundation101 mnt]# echo nihao > file1
    
    [root@foundation101 mnt]# cat file1
    
    nihao
    
    [root@foundation101 mnt]# cat file2
    
    nihao
    
    [root@foundation101 mnt]# cat file3
    
    nihao
    
    [root@foundation101 mnt]# rm -rf file1
    
    [root@foundation101 mnt]# cat file2
    
    nihao
    
    [root@foundation101 mnt]# cat file3
    
    cat: file3: No such file or directory

    通过上面的测试可以看出:当删除原始文件法file1后,硬链接file2不受影响,但是软链接file3文件无效

     

    总结:

    1).删除软链接file3,对 file1,file2无影响;

    2).删除硬链接 file2,对 file1,file3 也无影响;

    3).删除原文件 file1,对硬链接 file2 没有影响,导致软链接 file3失效;

    4).同时删除原文件file1,硬链接file2,整个文件会真正的被删除。

    展开全文
  • Linux下的链接文件

    千次阅读 2011-03-05 22:00:00
    这个区别是很重要,它导致了两种链接文件性质以及操作上的差异,反映各个方面,我会文章的最后归纳一下。 <br /> 二、如何理解两种链接文件的两种不同指向?如果了解 linux里文件的存

    Ln命令用来在文件之间创建链接,默认为创建硬链接(目录不能创建硬链接),使用选项-s创建符号链接。讲ln以前,我们先来了解一下linux里的链接。

      一、Linux里的链接又被称为链接文件,它分为硬链接和符号链接两种。两者的区别在于:硬链接指向文件本身,符号链接指向文件名称。这个区别是很重要,它导致了两种链接文件性质以及操作上的差异,反映在各个方面,我会在文章的最后归纳一下。

      二、如何理解两种链接文件的两种不同指向?如果了解 linux里文件的存储机制,这个很好理解。我在以前讲inode的文章里提到过,Linux里文件的文件名、文件属性、文件内容是分别存储的,所以硬链接和符号链接才可以有不同的指向。
      这里要讲一下。我以前讲过,linux里寻找文件的顺序是:根据文件名,找到inode编号,根据编号找到inode块,然后根据inode块中的属性信息找到数据块(即文件内容)。所以硬链接指向文件本身,实际上是指向文件的inode编号。之所以没有明确讲出它是指向inode编号,是因为绕的太远,涉及的概念更多,这就更加讲不清楚了,所以才用了一个没有概念意义的的文件本身代替。

      三、有人说,linux链接文件与windows快捷方式相似。某种程度上讲是这样的,严格上讲又有不同。首先,从指向功能上看,符号链接、硬链接、windows快捷方式都具有指向功能;但它们的区别也很明显:windows快捷方式指向文件的位置,而无论是符号链接还是硬链接都与windows快捷方式不同;其次,从文件性质上看,符号链接与windows快捷方式都是一种文件,但硬链接根本不是一种文件,
    只是一种指向。
    为什么说符号链接是一种文件,而硬链接却不是?这是因为创建链接时,系统会为符号链接重新分配一个inode编号,但不会为硬链接重新分配inode号,硬链接和它的源文件共享一个inode。我讲过,linux里每创建一个文件,系统都会为其分配一个inode,每个文件都有一个惟一的inode编号。我们可以从这个方面来确定它们是不是一种文件。使用命令ls –li命令即可查看它们的inode编号,我在下面会讲到,硬链接文件m_h和它的源文件mial共享一个inode。 
      号称文件的硬链接不是一种文件,不标称自己为文件的Window快捷方式反而是一种普通文件。有意思吧?

      四、我们使用ls –li命令查看文件时,系统是分字段给出文件信息的。根据ls命令的info帮助文件所述,第一个字段是inode编号,第二字段是文件类型和权限的信息,第三字段是文件的硬链接数信息。这个硬链接数是怎么一回事?
      我们来看个图片

      我们创建了mail文件的符号链接m_s和硬链接m_h。如图所示,第一个字段是inode号,我们可以看到互为硬链接的的mail和m_h的inode相同;第二字段的首位字符为d的是目录文件,为-的是普通文件,为l的就是mail的链接文件m_s;第三个字段是硬链接数,可以看到图片里的五个文件的硬链接数分别是5、2、2、1、1、4。 
      硬链接数是ls的info帮助文档里”number of hard links”的直译,大多数文章里都是这么译的,我也随大流。根据规定,没有硬链接的普通文件的硬链接数为1,每增加一个硬链接,硬链接数加1;不包含子目录的目录文件的硬链接数为2,每增加一个子目录,硬链接数加1。
      那么,这个硬链接数到底是什么呢?为什么又有一个这么奇怪的规定?我有一点自己的理解,不一定正确,这里讲出来,敬请大家雅正。
      ln命令的info帮助文档里说:A ’hard link’ is another name for an existing file。我认为硬链接数就是文件的文件名称数,更确切的说,我认为硬链接数实际上是对文件本身的指向数。
      没有硬链接的普通文件,它只有一个对文件本身的指向,所以它的硬链接数为1;而每增加一个硬链接,就增加了一个对文件本身的指向,所以硬链接数要加1。而符号链接指向了文件名称,并没有指向文件本身,所以无论为文件创建了多少个符号链接,硬链接数也不会增加。
      那么,为什么不包含子目录的目录文件的硬链接数为2呢?这是因为不包含子目录的目录文件里只两个目录项,它们分别是:“.”和“..”,代表目录自身和其父目录。每增加一个子目录,目录文件里都要增加一个目录项。那在子目录下再创建一个子目录,即创建一个当前目录的孙子目录,当前目录的目录项会增加么?不会。
      现在我们来看图片中五个文件的硬链接数的含义:它们分别代表Desktop目录下有3个子目录, mail文件有一个硬链接,m_h文件有一个硬链接,m_s文件没有硬链接,xx目录下有2个子目录。

      五、这两种链接有哪些具体的差异呢?
      首先,概念上硬链接指向文件本身,符号链接指向文件名。其次,性质上硬链接不是一种文件,符号链接是。然后,与源文件的关系上,硬链接与源文件关系紧密,修改任何一个文件都能同步引起另外一个文件的变化;符号链接则更像一个独立文件,可以对符号链接和它所指向的源文件分别加以修改。再者,显示上硬链接没有明示自己为硬链接;符号链接会明确指出它是一个符号链接。最后,硬链接能节省大量磁盘空间,但它不能为目录创建硬链接,也不能跨文件系统创建硬链接;符号链接与硬链接相比则灵活的多。
      你可能会疑惑:上图显示m_h的大小明明比m_s大?怎么能说硬链接比符号链接节省磁盘空间呢?这是因为m_h显示的是mail的大小,它本身基本上不占用磁盘空间。我们用du命令来查看一下。

      目录xy下有mail文件(12K)和它的硬链接文件。用du统计目录占用磁盘空间大小,发现它占16K,而mail文件为12K,其余4K为目录项。好像m_h根本就没有被统计进来,其实并不是没有被统计,而是它大小为0;使用选项-l,开启重复统计功能就可以看出来,目录xy占用的磁盘空间变为了28K。 
      Over~讲了这么多,希望我把它们给讲明白了。

    展开全文
  • 博客搬家了,最近同时更新,没准什么时候就完全搬走了-_- http://blog.just66.cn0X00 什么是链接文件Linux中的...Linux中有两种链接文件硬链接和软连接也称为符号链接 介绍链接文件之前先要介绍一下Linux文件系统

    博客搬家了,最近同时更新,没准什么时候就完全搬走了-_-
    http://blog.just666.cn 这个是新博客地址,希望大家多多关照

    0X00 什么是链接文件

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

    inode是Linux文件系统中文件的唯一定位器,每一个文件都有一个inode,也是唯一的,每一个inode唯一对应一个文件。

    还要熟悉一下指针的问题,如果学习过C/C++的话理解起来会很轻松

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

    0X01 硬链接

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

    0X02 软链接——符号链接

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

    展开全文
  • [转]linux创建链接文件两种方法

    千次阅读 2014-02-10 15:51:00
      一、 链接的分类: 链接分为软链接和硬链接:  1> 软链接: ...软链接又叫符号链接,这类文件包含了另外一个文件的路径。可以连接任意文件和目录,也可以连接不同的文件系统文件,也可以连接不存在的

    转自 http://topic.csdn.net/u/20120930/11/3d9e5a0d-6dad-4dee-8a9d-6ad50f52f69e.html?r=79806698

     

    一、 链接的分类:
    链接分为软链接和硬链接:
      1> 软链接:
    软链接又叫符号链接,这类文件包含了另外一个文件的路径。可以连接任意文件和目录,也可以连接不同的文件系统文件,也可以连接不存在的文件,还可以循环连接自己。
      2> 硬链接是一个已存在文件的另一个名字。注意:
      1)只能在同一个文件系统中的文件才能创建硬链接;
    2)不允许给目录创建硬链接。
    二、在shell界面使用ln命令创建链接
      当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。例如:
      ln –s /bin/less /usr/local/bin/less,其中-s 是代号(symbolic)的意思。
    如果你用ls察看一个目录时,发现有的文件后面有一个@的符号,那就是一个用ln命令生成的文件,用ls –l命令去察看,就可以看到显示的link的路径了。

    这里有两点要注意:
    1>ln命令会保持每一处链接文件的同步性,也就是说,不论你改动了哪一处,其它的文件都会发生相同的变化;
    2>ln的链接又软链接和硬链接两种:
    1)软链接创建指令:ln –s filename link_filename,意为创建一个名为“link_filename”指向 “filename”的链接文件,它只会在你选定的位置上生成一 个文件的镜像,类似windows下的快键方式。
    2)硬链接创建指令:ln filename link_filename,没有参数-s, 它会在 你选定的位置上生成一个和源文件大小相同的文件。

    无论是软链接还是硬链接,文件都保持同步变化。



    指令参数详细说明:
      -f : 链结时先将与 dist 同档名的档案删除
      -d : 允许系统管理者硬链结自己的目录
      -i : 在删除与 dist 同档名的档案时先进行询问
      -n : 在进行软连结时,将 dist 视为一般的档案
      -s : 进行软链结(symbolic link)
      -v : 在连结之前显示其档名
      -b : 将在链结时会被覆写或删除的档案进行备份
      -S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾
      -V METHOD : 指定备份的方式
      --help : 显示辅助说明
      --version : 显示版本


    三、 C程序中使用link函数创建
    link函数申明如下:
    #include <unistd.h>
    int link (const char * oldpath, const char * newpath);
    函数说明:link()以参数newpath 指定的名称来建立一个新的链接(硬链接)到参数oldpath 所指定的已存在文件. 如果参数newpath 指定的名称为一已存在的文件则不会建立链接。
    返回值:成功则返回0, 失败返回-1, 错误原因存于errno。
    错误代码:
     1、EXDEV 参数oldpath 与newpath 不是建立在同一文件系统.
     2、EPERM 参数oldpath 与newpath 所指的文件系统不支持硬连接
     3、EROFS 文件存在于只读文件系统内
     4、EFAULT 参数oldpath 或newpath 指针超出可存取内存空间.
     5、ENAMETOLLONG 参数oldpath 或newpath 太长
     6、ENOMEM 核心内存不足
     7、EEXIST 参数newpath 所指的文件名已存在.
     8、EMLINK 参数oldpath 所指的文件已达最大连接数目.
     9、ELOOP 参数pathname 有过多符号连接问题
     10、ENOSPC 文件系统的剩余空间不足.
     11、EIO I/O 存取错误.
     
    范例:
     /* 建立/etc/passwd 的硬连接为pass */
     #include <unistd.h>
     main()
     {
      link("/etc/passwd", "pass");
     } 

    展开全文
  • Linux--链接文件link

    千次阅读 2016-10-28 15:18:12
    linux系统链接文件两种,一者硬链接文件,二者软链接文件;两文件都可通过命令ln来生成。 1.硬链接文件 使用方法:ln 原文件 硬链接文件 ​ 硬链接(hard link, 也称链接)就是文件的一个或多个文件名。再说白点...
  • linux链接文件

    万次阅读 2011-12-26 13:06:29
    链接两种方式:硬链接和软链接。  (一)软链接  软链接又叫做符号链接。基本命令为: ln -s sourcePlace newPlace 软链接可以链接任何文件或者目录,还可以链接不同文件系统的文件或者目录。  软链接的...
  • Linux文件系统链接

    千次阅读 2008-04-03 13:15:00
    Linux文件系统链接两种:硬链接和符号链接,可以使用ln命令建立,默认情况下产生硬链接。ln命令具体使用可以参考man手册。 硬连接直接指向文件的i节点(Index node)。Linux中,任何一个文件可以有多个目录项指向其i...
  • 今天我们来学习特殊一点的文件"链接文件",这一章节会告诉大家什么是链接文件,以及链接文件有几类型,有什么区别,什么地方使用到。链接文件之前第一章就有提到过,查看一个文件的详细信息会有一个"drwxr-xr-...
  • Linux文件的软链接和硬链接

    千次阅读 2015-07-27 13:29:11
    Linux链接概念Linux链接两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。1.1索引节点索引节点是指许多类Unix文件系统中的一种数据结构。每个索引...
  • Linux下七种文件类型、文件属性及其查看方法

    万次阅读 多人点赞 2018-02-01 22:11:15
    Linux中最多的一种文件类型, 包括 纯文本文件(ASCII);二进制文件(binary);数据格式的文件(data);各种压缩文件.第一个属性为 [-] 目录文件 就是目录, 能用 # cd 命令进入的。第一个属性为 [d],例如 [drwxrwxrwx...
  • linux下的符号链接文件

    千次阅读 2018-07-20 10:40:20
    链接两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link,也叫做软链接)。默认情况下,ln命令产生硬链接。  (一)硬链接  1.产生硬链接的语法 ln 源文件 目标文件 (注意:不能为...
  • 在Linux中ln命令用来为文件创建连接,连接类型分为硬连接(Hard Link)和符号连接(Symbolic Link)两种,默认的连接类型是硬连接。如果要创建符号连接必须使用"-s"选项。 关于软硬连接解释 硬连接 ...
  • 在linux系统中有一种文件叫做链接文件,可以为解决文件的共享使用。链接的方式可以分为两种,一种是硬链接(Hard Link),另一种是软链接或者也称为符号链接(Symbolic Link)。 一、基本概念 1、硬链接 开始之前,...
  • Linux系统中的链接文件

    千次阅读 多人点赞 2019-06-06 20:14:09
    日志文件系统ext xfs里 1.节点区域 记录的都是文件属性,ls -l file ,文件的元数据inode tables 2.数据区域 放的时cat file看到的一切,数据块 cat 找的是数据区域 一个文件对应一个节点号,一个节点号对应一个...
  • Linux文件的硬链接与软连接

    千次阅读 2017-04-24 13:08:29
    Linux文件系统下有个特殊的文件,分别叫硬链接文件和软连接文件。硬链接文件是一引用计数的运用,软连接可以理解为Windows下面的快捷方式。硬链接硬链接的实质就是通过文件的inode节点进行连接。我们都知道,...
  • 查看linux中硬链接的所有文件

    千次阅读 2019-04-17 15:45:31
    在linux中,链接文件分为硬链接和软链接文件两种, 其中硬链接通过ln source_file dist_file建立, 软链接通过ln -s source_file dist_file建立。 软硬链接的区别:硬链接相当于一个文件两个名称,而软链接相当于...
  • Linux文件链接

    千次阅读 多人点赞 2016-12-30 10:37:48
    重点内容: 文件链接Linux文件链接分为两种: 软连接 和 硬链接Linudx下使用 ls -l 命令即可看到文件的很多信息,其中第一列的第一个字符代表的就是文件的类型;而下面紧跟的数字代表文件的连接数;比如: ...
  • 在Linux中常常会用到链接,就像PC电脑中的桌面快捷方式一样。 1. 使用方式:ln [option] source_file dist_file  -f 建立时,将同档案名删除  -i 删除前进行询问   -s 软链接,否则默认为硬链接   n -s...
  • linux查看硬链接对应的所有文件

    千次阅读 2017-11-14 21:33:00
    在linux中,链接文件分为硬链接和软链接文件两种,其中硬链接通过ln source_file dist_file建立,软链接通过ln -s source_file dist_file建立。 软硬链接的区别:硬链接相当于一个文件两个名称,而软链接相当于创建...
  • Linux系列第二谈(开机关机、Linux中的文件、目录管理、基本属性) 一、Linux常用命令 文件查看 1、cat Linux查看网络配置 # 查看网络配置: 文件地址 /etc/sysconfig/network-scripts/ [root@YKY ~]# cat /etc/...
  • Linux系统之间传输文件的几方法

    万次阅读 多人点赞 2016-06-14 17:11:23
    scp传输当LINUX主机之间要互传文件时可使用SCP命令来实现scp传输速度较慢,但使用ssh通道保证了传输的安全性复制文件 将本地文件拷贝到远程 scp 文件名 –用户名@计算机IP或者计算机名称:远程路径 从远程将文件拷...
  • linux ln命令: 链接文件或目录

    万次阅读 2011-11-10 16:40:35
    链接有两种方式,软链接和硬链接。  软链接文件  软链接又叫符号链接,这个文件包含了另一个文件的路径名。可以是任意文件或目录,可以链接不同文件系统的文件。链接文件甚至可以链接不存
  • 我们前面讲解了分区的格式化就是写入文件系统,而我们的 Linux 目前使用的是 ext4 文件系统。如果用一张示意图来描述 ext4 文件系统,则可以参考图 1。 图 1 ext4 文件系统示意图 ext4 文件系统会把分区主要...
  • Linux下几种文件传输命令

    万次阅读 2018-11-07 15:16:02
    Linux下几种文件传输命令 sz rz sftp scp    最近部署系统时接触了一些文件传输命令,分别做一下简单记录: 1.sftp Secure Ftp 是一个基于SSH安全协议的文件传输管理工具。由于它是基于SSH的,会传输过程...
  • linux链接与软链接 linux asm 文件

    千次阅读 2013-03-16 15:23:25
    但是几个头文件的路径真的把我搞糊涂了LINUX 2.6.13文件组织如下 头文件如下 #include #include #include 可我根本就找不到ARM对应的asm这个文件夹,或者说找到了也对应的不是对应S3C24XX的 ...
  • 分区的格式化就是写入文件系统,而我们的 Linux 目前使用的是 ext4 文件系统。如果用一张示意图来描述 ext4 文件系统,则可以参考图 1。 ext4 文件系统会把分区主要分为大部分(暂时不提超级块):小部分用于保存...
  • Linux文件系统的硬链接与软链接

    千次阅读 2013-02-06 09:41:19
    Linux链接两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。 【硬连接】 硬连接指通过索引节点来进行连接。在Linux文件系统中,保存磁盘分区中...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 295,402
精华内容 118,160
关键字:

在linux的两种链接文件

linux 订阅