浅谈Linux里的软硬链接

时间:2024-04-19 09:25:20

浅谈Linux里的软硬链接

本机环境

  • VMware WorkStation 17
  • Linux发行版: CentOS7
  • 执行权限:root

软链接

Linux下的软链接 其实 和Windows下的快捷方式是一样的。

拥有这样几个特性:

  • Linux的软链接创建后,删除软链接对源文件没有任何影响。
  • Linux的软链接可以创建多个,且都可以指向同一个源文件。
  • Linux的源文件如果删除,软链接即可失效。
  • Linux的软链接也可以链接文件夹。

软链接创建命令如下:

ln -s [源文件绝对路径] [软链接绝对路径]    # -s  是 soft 的意思  '柔软'

举例演示

# 我们在/opt/目录下创建一个source_demo.txt 文本文件,并写入一些测试内容
$ cd /opt
$ touch source_demo.txt
$ vim source_demo.txt
-----------------------------
这是源文件的内容,测试用
-----------------------------

# 然后我们在/tmp目录下来创建软链接指向这个source_demo文件
$ cd /tmp
$ ln -s /opt/source_demo.txt /tmp/lns_demo #创建连接文件 lns_demo连接
$ cat ln_demo # 查看这个文件内容,可以看到它输出了源文件的内容
$ ls -l # 查看创建的详细信息

# 然后,我们可以再创建一个指向/opt/source_demo.txt的的软链接,再或者删除软链接。
$ ln -s /opt/source_demo.txt /tmp/lns_demo1
$ rm -rf /tmp/lns_demo
$ rm -rf /tmp/lns_demo1
# 可以知道并不会对源文件产生任何影响

#我们直接删除源文件,链接文件就会失效
$ rm -rf /opt/source_demo.txt
# 再去查看链接文件,就会发现已经失效
$ cat /tmp/lns_demo

说明:我们可以使用 readlink [软链接路径] 来查看软链接到底它存放了什么?

$ readlink /tmp/lns_demo
输出: /opt/source_demo 
# 可以知道,软链接自己存的东西就是源文件的路径而已。

硬链接

介绍硬链接之前,需要搞清楚inode 是什么

  • inode

    操作系统中专门用于管理文件的软件被称之为 【文件系统】

    ​ ==注:==Linux里的文件系统类型主要有:FAT16 FAT32 NTFS XFS EXT3 EXT4

    文件系统里存储了诸多文件,而每个文件都有自己的元数据(包括,文件创建时间、修改时间、文件大小、属主信息等)

    这些数据保存在磁盘上的块(block),每个块占8个扇区,总计4kb数据。

    : block 是一连串的扇区

    而inode 就是类似这个文件的身份证号一样。中文名称叫做:索引节点

  • 查看inode 号

    ls -li filename.txt   # -i  inode
    # 33582193 -rw-r--r-- 1 root root 31 4月  18 22:49 filename.txt
    

通过inode 号码,就可以找到文件数据在磁盘上的位置,也就是block的位置。

  • 硬链接

    文件名和inode 是一对一的关系。

    创建多个硬链接,他的inode号是一样的。

    目录文件夹不支持硬链接

    不得跨文件系统创建硬链接

    ls -l 可以查看文件系统的硬链接数量

    -rw-r--r--  1 root root  31 418 22:49 filename.txt  # 1个硬链接
    

    创建硬链接方式

    ln [源文件绝对路径]  [硬链接文件绝对路径]
    ln /opt/source_demo /tmp/demo2
    

    特点:

    ​ 源文件删除不影响硬链接。

    ​ 如果把源文件和所有的硬链接都删除,那么文件数据就会丢失

相关文章