沈阳哪家做网站最好,自己建个网站怎么挣钱,怎么查自己是不是备案人员,用wordpress怎么生成pdf_word_图片文件概述
在Linux文件系统中#xff0c;软连接#xff08;Symbolic Link#xff09;和硬连接#xff08;Hard Link#xff09;是两种重要的文件链接方式。它们都可以创建指向相同文件内容的多个“链接”#xff0c;但在实现方式和特性上有所不同。
1. 硬连接#xff08;Ha…概述
在Linux文件系统中软连接Symbolic Link和硬连接Hard Link是两种重要的文件链接方式。它们都可以创建指向相同文件内容的多个“链接”但在实现方式和特性上有所不同。
1. 硬连接Hard Link
概念硬连接是同一个文件在文件系统中的多个目录项本质上是给同一个inode分配多个文件名。所有硬连接都指向同一个inode即同一份数据。特点 硬连接与目标文件共享同一个inode因此只在同一文件系统内有效。删除目标文件或硬链接文件不会影响其他硬链接只有当所有硬连接被删除后文件数据才会真正被删除。硬连接只能指向文件不能指向目录。创建命令使用ln [目标文件] [链接文件]来创建硬连接。例如 ln /home/user/file.txt /home/user/hard_link_to_file
2. 软连接Symbolic Link
概念软连接是一种指向文件或目录的引用类似于Windows中的快捷方式。软连接文件包含目标文件的路径当访问软连接时系统会自动跳转到目标文件。特点 软连接是一个独立的文件具有自己的inode索引节点。软连接可以跨文件系统创建即可以链接到不同分区上的文件。软连接可以指向文件或目录。如果目标文件被删除软连接会失效变成“断链”Broken Link。创建命令使用ln -s [目标文件或目录] [链接文件]来创建软连接。例如 ln -s /home/user/file.txt /home/user/link_to_file
总结
特性软连接硬连接是否共享inode否是跨文件系统支持不支持指向类型文件或目录文件失效情况目标文件删除则失效目标或链接删除不影响其他
软连接适合用于快捷访问不同位置的文件或目录硬连接则更适合需要在同一文件系统中保留文件副本的场景。
原理
inode源码
以下结构体对应文件的inode的源码其中不相关的部分已省略
struct ext2_inode {...__le32 i_block[EXT2_N_BLOCKS];/* Pointers to blocks */...
};
__le32 i_block[EXT2_N_BLOCKS]: 文件数据块的指针数组EXT2_N_BLOCKS 通常定义为 15。前 12 个是直接指向数据块的指针后面 3 个分别是单重、双重、三重间接指针用于存储文件内容的物理地址。
硬连接
硬连接文件和源文件使用同一个inode只是这个inode有两个不一样的文件名称 对应的结构体中的i_block中存放的是数据块的具体地址。
软连接
软连接是一个全新的文件为不同的inode通常情况下i_block 是用来存储文件数据块地址的。但在 EXT2 文件系统 中有一个例外对于小于 60 字节的软链接文件i_block 会直接存储软链接目标路径而不是数据块地址。这种设计是为了提高效率因为短路径的软链接可以直接在 inode 中存储路径信息从而避免为软链接额外分配数据块。
具体来说
普通文件和较大的软链接文件i_block 中保存的是数据块的地址。小的软链接文件通常指目标路径少于 60 字节i_block 中直接保存路径字符串而不是数据块地址。
这是 EXT2 文件系统的一种优化策略使得对短路径的软链接访问更快也减少了磁盘空间的使用。
示例
[rootct7_node01 tmp]# ll /disk/ -i
total 17
12 -rw-r--r--. 2 root root 3 Nov 4 15:57 hlf
13 lrwxrwxrwx. 1 root root 4 Nov 4 15:57 slf - srcf
12 -rw-r--r--. 2 root root 3 Nov 4 15:57 srcf
[rootct7_node01 tmp]## 软连接的data blocks中存放的为原文件的路径即当前目录下的srcf
[rootct7_node01 ~]# hexdump -s 128512 -n 128 /root/disk.img -C
0001f600 ff a1 00 00 04 00 00 00 6d 7e 28 67 66 7e 28 67 |........m~(gf~(g|
0001f610 66 7e 28 67 00 00 00 00 00 00 01 00 02 00 00 00 |f~(g............|
0001f620 00 00 00 00 01 00 00 00 73 72 63 66 00 00 00 00 |........srcf....|
0001f630 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
*
0001f660 00 00 00 00 e0 90 fe e3 7a 01 00 00 00 00 00 00 |........z.......|
0001f670 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 |................|
0001f680
[rootct7_node01 ~]#