ln :硬链接与软链接

语法格式

  • ln 【option】 【source】 【target】
  • ln 【选项】【源文件目录】【目标文件目录】

说明:
ln命令以及后面的选项和文件,每个元素之间至少要有一个空格。

选项说明:

【无参数】 【创建硬链接】

【-s】【创建软连接(符号链接)】

硬链接

硬链接是指通过索引节点(Inode)来进行链接。在linux(ext2、ext3、ext4)文件系统中,所有文件都有一个独有的inode编号。

在linux文件系统中,多个文件名指向同一个索引节点(inode)是正常且允许的。这种情况下的文件就称为硬链接。硬链接文件相当于文件的的另外一个入口。它的作用之一就是允许一个文件拥有多个有效路径名(多个入口),这样用户就可以建立硬链接到重要文件,以防止误删数据。

执行如下命令建立一个硬链接文件

/usr/local
ln helei.log helei    给helei.log文件做一个硬链接到helei文件。
ls -i helei.log helei 我们可以看到这两个文件的链接数是一样的。
2459868 helei  2459868 helei.log
rm -f helei.log   删除源文件
cat helei.log
cat: helei.log: No such file or directory文件真的被删除了吗
ln helei helei.log在做一次硬链接就可以还原,找回重要文件。

硬链接知识小结:

  1. 具有相同inode节点号的多个文件互为硬链接文件。
  2. 删除硬链接文件或者源文件任意之一,文实体件并为删除
  3. 只有删除了源文件以及源文件所有对应的硬链接文件,文件实体才会被删除
  4. 当所有的硬链接文件以及源文件被删除之后,再存放新的数据时会占用这个文件的空间,或者磁盘fsck检查的时候,删除的数据也会被系统回收。
  5. 硬链接文件就是文件的另外一个入口,(相当于超市的前门和后门)
  6. 可以通过给文件设置硬链接文件,来防止重要文件被删除
  7. 执行命令“ln 源文件 硬链接文件”即可完成硬链接的创建
  8. 硬链接文件用rm命令删除
  9. 对于静态文件(没有进程正在调用的文件)来讲,当对应硬链接数为0(i_link)时,文件就会被删除。i_link的查看方法是ls -lih 查看结果的第三列,既硬链接数。

软链接

注意:硬链接文件是类型是普通文件,而软连接是真正的链接文件

软连接语法格式

ln 【-s】【源文件】【目标文件】

注意:上面的目标文件不能事先存在,需要用ln命令来创建。

执行命令创建软连接如下:

/usr/local
ln -s helei.log heleiruanlianjie为helei.log创建软连接文件,这个heleiruanlianjie不能事先存在

可以发现软连接文件和硬链接文件有如下两点不同之处

  1. 软链接文件的inode值和源文件、硬链接文件都不同
  2. 软链接文件的类型是l(字母l)

软链接知识小结:

  1. 软连接类似windows的快捷方式
  2. 软连接类似一个文本文件,里面存放的是源文件的路径,指向源文件实体
  3. 即使删除了源文件,软链接文件还是依然存在,但是无法访问指向的源文件路径内容了
  4. 失效是时候一般是白字红底闪烁提示
  5. 执行命令“ln -s 源文件 软链接文件”既可完成创建软链接(软链接文件名事先不能存在)
  6. 软链接文件和源文件是不同类型的文件,也是不同的文件,inode号也不相同
  7. 删除软链接可以用rm命令
    测试(如下图):


结论:

  1. 删除软链接文件对源文件以及硬链接文件无任何影响
  2. 删除硬链接文件对源文件及软链接文件无任何影响
  3. 删除源文件,对硬链接文件没有任何影响,但是会导致软链接文件失效,白字红底闪烁
  • 同时删除源文件,硬链接文件,才会真正的删除整个文件
  • 很多硬件设备中的快照功能,就是利用了硬链接的原理
  • 源文件和硬链接文件具有相同的索引节点号,可以认为是同一个文件或一个文件的多个入口
  • 源文件和软链接文件的索引节点号不同,是不同的文件,软链接相当源文件的快捷方式,含有源文件的位置指向。

目录链接的测试总结

  1. 对于目录,不可以创建硬链接,但是可以创建软链接,需要注意的是,目录是可以跨文件系统的,因此程序员需要限制使用ln命令给目录创建硬链接的功能,以防止出现各种问题。
  2. 给目录创建软链接是生产场景中的技巧
  3. 目录的硬链接不能跨文件系统(从硬链接的原理可以理解,硬链接需要有相同的inode值)
  4. 每个目录下都有一个硬链接“.”号,和对应上级目录的硬链接“..”。
  5. 在父目录中创建一个子目录,父目录的链接数增加1(子目录都有“..”来指向父目录)。但在父目录创建文件时,父目录的链接数不会增加。

你可能感兴趣的:(ln :硬链接与软链接)