• 正文
  • 相关推荐
申请入驻 产业图谱

飞凌嵌入式ElfBoard-软连接(符号链接)与硬连接

12小时前
256
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

Linux系统中,有软连接和硬连接两种不同的文件链接方式。

硬连接是对文件的另一个目录项,所有硬连接都指向相同的inode,就好比一块存储数据的内存有着多个名字,每增加一个硬连接,连接数就会加一。当连接数为0时,相对应的内存就会被彻底删除。

软连接就好比Windows系统中的快捷方式,最终指向的是源文件,一旦源文件删除,则软连接失效,而且软连接和源文件有这个不同的inode号。

下面介绍ln命令基本用法,方便后面做演示。

硬连接: ln 源文件 连接文件

软连接: ln -s 源文件 连接文件

大家自行找位置创建测试文件,我这里使用的是/home/elf/work/test,分别创建hard.txt、soft.txt、source.txt文件,最后使用stat命令查看最终结果。

$ stat ./*

File: ./hard.txt

Size: 0          Blocks: 0          IO Block: 4096   regular empty file

Device: 803h/2051d Inode: 5279891     Links: 2

Access: (0644/-rw-r--r--)  Uid: ( 1000/     elf)   Gid: ( 1000/ forlinx)

Access: 2024-11-06 21:31:37.948957601 +0800

Modify: 2024-11-06 21:31:37.948957601 +0800

Change: 2024-11-06 21:34:43.967331843 +0800

Birth: 2024-11-06 21:31:37.948957601 +0800

File: ./soft.txt -> source.txt

Size: 10         Blocks: 0          IO Block: 4096   symbolic link

Device: 803h/2051d Inode: 5279903     Links: 1

Access: (0777/lrwxrwxrwx)  Uid: ( 1000/     elf)   Gid: ( 1000/ forlinx)

Access: 2024-11-06 21:34:45.739296928 +0800

Modify: 2024-11-06 21:32:30.477947367 +0800

Change: 2024-11-06 21:32:30.477947367 +0800

Birth: 2024-11-06 21:32:30.477947367 +0800

File: ./source.txt

Size: 0          Blocks: 0          IO Block: 4096   regular empty file

Device: 803h/2051d Inode: 5279891     Links: 2

Access: (0644/-rw-r--r--)  Uid: ( 1000/     elf)   Gid: ( 1000/ forlinx)

Access: 2024-11-06 21:31:37.948957601 +0800

Modify: 2024-11-06 21:31:37.948957601 +0800

Change: 2024-11-06 21:34:43.967331843 +0800

Birth: 2024-11-06 21:31:37.948957601 +0800

上图中source.txt是源文件,hard.txt是硬连接文件,soft.txt是软连接文件。其中硬连接和源文件的inode号和连接数(Links)是一样的,这里因存在源文件和硬连接文件所以links数为2。软连接的inode数和link数与源文件都不一致,正好验证了前面的理论。

下面来说说硬连接和软连接的特点:

软连接:可以跨文件系统创建,并可以链接到目录。但删除源文件会导致符号链接失效(变成悬链接)。

硬连接:不能跨越文件系统创建,也不能链接到目录。但删除一个硬连接不影响其他硬连接或者源文件数据,直到最后一个硬连接被删除时,文件数据才会被清除。

创建软连接可以使用symlink()函数,创建硬连接文件可以使用link() 函数,下面就来介绍一下这两个函数。

相关推荐