王道408---操作系统--软链接硬链接真题解析
一、题目
二、解答
每个文件都有inode ,Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号
每个文件也都有count计数器,来记录自己与其他文件的连接数,其值默认为1,也就是说,我们只创建一个文件,啥都不干,就有1的计数
1、软链接
软链接不会改变count计数的值,它本质就相当于一个快捷方式
我们在linux操作系统下执行如下命令:
touch t1 stat ./t1 ln -s t1 t2 stat ./t1 stat ./t2
count计数恒为1
2、硬链接
硬链接会增加count计数的值,每链接一个文件count计数就会加1
比如我们用 t2 对 t1创建硬链接,则两者count值为2,再用t3 对 t1 进行硬链接,则此时,t1,t2,t3三者count引用计数都为 3 。尚若我们用 t4 对 t3 进行硬链接,则t1 t2 t3 t4 的count引用计数皆为4
touch t1 stat ./t1 ln t1 t2 stat ./t1 stat ./t2
ln t1 t3
stat ./t1
stat ./t2
stat ./t3
ln t3 ./t4
stat ./t1
stat ./t2
stat ./t3
stat ./t4
这时候我们查看其 inode 值:
发现这四个值相同!
也就是说这四个值本质上是一个文件,这是四个共享文件!
我们尝试修改一个文件的内容可以发现所有文件的内容都被修改了!
三、软链接与硬链接的使用
1、硬链接
Linux 硬链接是一种文件系统中的链接类型,它允许多个文件名指向同一个物理文件。硬链接与原始文件共享相同的inode和数据块,因此它们在文件系统中占用的空间相同。 硬链接的使用情景有以下几个方面: 1. 文件备份:通过创建硬链接,可以在不复制文件的情况下创建文件的备份。当原始文件更改时,备份文件仍然保持同步。 2. 共享文件:多个用户之间可以通过硬链接共享文件。这对于团队合作和共享资源非常有用。 3. 节省磁盘空间:硬链接允许多个文件名指向同一个文件,这可以节省磁盘空间。当你需要多个文件名指向相同的内容时,使用硬链接比复制文件更有效。 需要注意的是,硬链接只能在同一文件系统中使用。另外,删除原始文件并不会影响硬链接,只有当所有硬链接都被删除后,文件的存储空间才会被释放。
2、软链接
软链接(Symbolic Link)是一种指向目标文件或目录的特殊文件,类似于Windows系统中的快捷方式。与硬链接不同,软链接是一个指向目标文件的符号引用,而不是共享相同的inode和数据块。 软链接的使用前景如下: 1. 跨文件系统链接:软链接可以跨越不同的文件系统,允许在不同的存储设备之间创建链接。 2. 管理软件包:在Linux系统中,软链接常用于管理软件包。例如,将可执行文件放在/usr/bin目录下的软链接,可以使得在任何位置都可以通过执行该软链接来运行该程序。 3. 管理共享库:软链接还可以用于管理共享库文件。通过在/usr/lib目录下创建共享库的软链接,可以使得不同的程序都可以共享同一个库文件。 4. 管理配置文件:软链接可以用于管理配置文件。例如,将一个公共的配置文件放在一个位置,并在各个用户的配置文件目录下创建软链接,可以实现统一的配置管理。 需要注意的是,软链接在删除原始文件或目录时会失效,而硬链接不会。此外,软链接相对于硬链接会占用更多的存储空间,因为它需要额外的元数据来存储目标文件的路径信息。