对linux硬链接和软链接理解
linux系统有有软链接和硬链接两种,所谓软链接类似于windows系统中的快捷方式,源文件如果被删除,软链接将失败。而硬链接则不同,即使源文件被删除,文件依旧存在,这是为什么呢?下面我就为大家简单说明一下其中的原因:
软链接:
这是我画的一张linux存储文件的简易图,软链接的连接道理是,在inode表中,存放指针位置并非是指针,而是存放着一个文件的元数据路径,通过路径找到文件元数据,再找到文件本身。例如:/root/1为原文件,/root/2为软链接文件
第一行为inode号,这两个文件拥有不同的inode号,2文件的文件大小为1字节,这一个字节中写的是“1”,也就是连接文件的名字,如果连接文件的名字叫123,那此处就会是3个字节。
软链接的特点:
软链接有自己的文件属性及权限等;
可对不存在的文件或目录创建软链接;
软链接可交叉文件系统;
软链接可对文件或目录创建;
创建软链接时,链接计数 i_nlink 不会增加;
删除软链接并不影响被指向的文件,但若被指向的原文件被删除,则相关软连接被称为死链接(即 dangling link,若被指向路径文件被重新创建,死链接可恢复为正常的软链接)。
硬链接:
硬链接的道理是,不同的文件拥有同一个的inode号码,一个inode号码可以拥有不同的文件名,但所保存的数据只有一份。如果其中的一个文件名被删除,仅仅是切断文件名和inode号的关联,对其他链接和数据并不造成影响。
这两个文件拥有相同的inode号,包括权限大小也都相同,这就是硬链接。
硬链接的特点:
文件有相同的 inode 及 data block;
只能对已存在的文件进行创建;
不能交叉文件系统进行硬链接的创建;
不能对目录进行创建,只可对文件创建;
-
删除一个硬链接文件并不影响其他有相同 inode 号的文件。
创建软链接的方法:
ln -s TARGET LINK_NAME
创建硬链接的方法
ln TARGET LINK_NAME
-f : 链结时先将与 dist 同档名的档案删除
-d : 允许系统管理者硬链结自己的目录
-i : 在删除与 dist 同档名的档案时先进行询问
-n : 在进行软连结时,将 dist 视为一般的档案
-s : 进行软链结(symbolic link)
-v : 在连结之前显示其档名
-b : 将在链结时会被覆写或删除的档案进行备份
-S SUFFIX : 将备份的档案都加上 SUFFIX 的字尾
-V METHOD : 指定备份的方式
--help : 显示辅助说明
--version : 显示版本
转载于:https://blog.51cto.com/zebra930/1832014