硬链接和软链接
1.概念
-
软链接(Symbolic Link),一个指向另一个文件的指针,实际上是一个独立的文件,保存了被链接文件的路径。
-
硬链接(Hard Link)在文件系统中创建的多个指针指向同一块磁盘区域。
2.使用方法
-
软连接
ln -s(symbolic) 源文件 链接文件 #创建软链接 例如:ln -s /etc/NetworkManager/system-connections/ens33.nmconnection /root/ens33 #将ens33网卡的配置文件制作软链接到/root下取名ens33 ll /root/ens33 lrwxrwxrwx 1 root root 57 Aug 10 09:43 ens33 -> /etc/NetworkManager/system-connections/ens33.nmconnection #ll查看软链接的相关信息
-
硬链接
ln 源文件 链接文件 #创建硬链接 例如:ln /etc/NetworkManager/system-connections/ens33.nmconnection /root/ens33 #将ens33网卡的配置文件制作硬链接到/root下取名ens33 ll /etc/NetworkManager/system-connections/ens33.nmconnection -rw-------. 2 root root 227 Jul 29 22:17 /etc/NetworkManager/system-connections/ens33.nmconnection ll ens33 -rw-------. 2 root root 227 Jul 29 22:17 ens33 #ll查看硬链接的相关信息
3.特点分析
3.1 软链接:
-
软连接对文件和目录都可以做
-
删除源文件,链接文件失效
-
可以跨文件系统创建
-
软链接文件和源文件的inode号是不同的
-
注意:删除对目录创建的软链接时注意不要加/,会把源文件里的内容删掉
3.2 硬链接:
-
硬链接只能对文件做,不能对目录做
-
删除源文件,链接文件依然有效
-
不可以跨文件系统创建
-
硬链接和源文件具有相同的inode号
4.删除原理
4.1 inode号
Linux中每个文件在文件系统中都有一个唯一的inode结构,inode包含文件的元数据,例如文件的大小、权限、创建和修改时间等,以及指向文件数据块的指针。
4.2 引用计数
inode中还有一个引用计数,记录有多少个文件句柄指向该inode。当你创建一个文件时,这个计数为1,当你有多个硬链接指向同一个inode时,计数增加。
stat ens33 #查看ens33文件详细信息 File: ens33 Size: 227 Blocks: 8 IO Block: 4096 regular file Device: fd00h/64768d Inode: 17292383 Links: 2 Access: (0600/-rw-------) Uid: ( 0/ root) Gid: ( 0/ root) Access: 2024-08-10 09:50:33.961366509 +0800 Modify: 2024-07-29 22:17:48.832006679 +0800 Change: 2024-08-10 09:50:16.169448637 +0800 Birth: 2024-07-29 22:17:48.832006679 +0800 #Link:2代表该文件引用计数为2
4.3 删除过程
执行命令: 当你运行
rm
命令时,Linux内核会查找对应的inode。引用计数减少:
rm
会减少该inode的引用计数。如果计数下降到0,表示没有任何路径指向这个文件。释放空间: 当引用计数为0时,inode和其关联的数据块会被标记为可用,供后续文件使用。
4.4 硬链接备份
删除文件只会清除文件的句柄和inode的引用,而不是立即擦除文件内容。
如果通过硬链接创建的某个链接被删除,只有该链接的引用计数降低,不同的链接仍然可以访问文件数据,确保数据不丢失,直到所有链接都被删除。
所以通常通过硬链接备份重要文件,以免误删。