软硬链接的使用和区别

Linux 软硬链接的使用和区别

工具/原料

  • Centos 7

方法/步骤

  1. 1

    创建一个文件123.txt并在里面写入内容hello

    touch 123.txt   //新建文件

    cat 123.txt   //查看文件内容

    Linux 软硬链接的使用和区别

  2. 2

    软链接

    例:

    对123.txt创建一个软链接并命名为123-softlink.txt

    ln -s 123.txt 123-softlink.txt  //创建软连接

    cat 123-softlink.txt    //查看软链接文件内容

    ls -lh    //显示信息可以看到软链接是指向源文件的并且比源文件小

    Linux 软硬链接的使用和区别

    Linux 软硬链接的使用和区别

  3. 3

    软链接相当于Windows的创建快捷方式

    删除源文件123.txt后123-softlink.txt会失效

    验证:

    rm -r 123.txt    //删除文件123.txt

    cat 123-softlink.txt   //再次查看刚才的软链接显示没有那个目录

    Linux 软硬链接的使用和区别

  4. 4

    再创建一个文件1.txt,写入内容hi

    touch 1.txt

    Linux 软硬链接的使用和区别

  5. 5

    创建硬链接

    例:

    对1.txt创建硬链接命名为1-hardlink.txt

    ln 1.txt 1-hardlink.txt    //创建硬链接

    ls -l   //查看目录下所有文件信息,这里可以看到硬链接文件与源文件大小相同

    cat 1-hardlink.txt   //查看文件

    Linux 软硬链接的使用和区别

  6. 6

    硬链接间的文件大小文件间的大小一致,硬链接相当于一个文件有多个名字,只删掉其中一个名字的时候不会删除文件,硬链接数会减1,当硬链接数为0时才会删除文件,硬链接的inode号相同。

    ls -lh  //现在可以看到硬链接数为2

    ls -il  //可以看到inode号

     

    Linux 软硬链接的使用和区别

    Linux 软硬链接的使用和区别

  7. 7

    验证:删除文件1.txt后硬链接1-hardlink.txt依旧生效

    rm -r 1.txt  //删除文件1.txt

    ls -lh  //此时可以看到硬链接数减了1

    cat 1-hardlink.txt   //文件不会因为1.txt删除而失效

    Linux 软硬链接的使用和区别

    END

总结

n创建硬链接,带-s选项命令创建软链接

软连接可以对存在及不存在的文件或目录创建,硬链接只能对存在的文件创建

硬链接文件间有相同的inode号,删除其中一个硬链接不影响其它同inode号的文件

删除软链接不会删除它指向的文件,反之删除了软链接指向的文件软链接会失效

软链接作为快捷方式它会比原文件小,硬链接间文件大小相同

硬链接(hard link):

    A是B的硬链接(A和B都是文件名),则A的目录项中的inode节点号与B的目录项中的inode节点号相同,即一个inode节点对应两个不同的文件名,两个文件名指向同一个文件,A和B对文件系统来说是完全平等的。如果删除了其中一个,对另外一个没有影响。每增加一个文件名,inode节点上的链接数增加一,每删除一个对应的文件名,inode节点上的链接数减一,直到为0,inode节点和对应的数据块被回收。注:文件和文件名是不同的东西,rm A删除的只是A这个文件名,而A对应的数据块(文件)只有在inode节点链接数减少为0的时候才会被系统回收。

软链接(soft link):

    A是B的软链接(A和B都是文件名),A的目录项中的inode节点号与B的目录项中的inode节点号不相同,A和B指向的是两个不同的inode,继而指向两块不同的数据块。但是A的数据块中存放的只是B的路径名(可以根据这个找到B的目录项)。A和B之间是“主从”关系,如果B被删除了,A仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。

主要区别、限制:

硬链接:

  a.不能对目录创建硬链接,原因有几种,最重要的是:文件系统不能存在链接环(目录创建时的".."除外,这个系统可以识别出来),存在环的后果会导致例如文件遍历等操作的混乱(du,pwd等命令的运作原理就是基于文件硬链接,顺便一提,ls -l结果的第二列也是文件的硬链接数,即inode节点的链接数)

  b:不能对不同的文件系统创建硬链接,即两个文件名要在相同的文件系统下。

  c:不能对不存在的文件创建硬链接,由原理即可知原因。

软链接:

  a.可以对目录创建软链接,遍历操作会忽略目录的软链接。

  b:可以跨文件系统

  c:可以对不存在的文件创建软链接,因为放的只是一个字符串,至于这个字符串是不是对于一个实际的文件,就是另外一回事了

ln 语法格式 

硬链接:ln 源文件 链接名   

软链接:ln -s 源文件 链接名

 注意:  链接的源文件路径要写绝对路径)

 否则会报错(no such file or diretory)

示例:

 Linux 软硬链接的使用和区别

 

相关文章:

  • 2021-07-29
  • 2022-01-23
  • 2021-10-06
  • 2021-12-29
  • 2022-12-23
猜你喜欢
  • 2021-11-19
  • 2021-12-26
  • 2021-08-24
  • 2021-09-28
  • 2021-11-28
  • 2021-10-18
相关资源
相似解决方案