文件系统-----软连接和硬链接

先,来看一下文件的各个属性。

图1  ls li查看文件属性

输入命令是ls -li

第一行:inode(下面会将述inode)

第二行:文件的种类和权限

第三行:硬链接的个数

第四行:属组

第五行:所归属的组

第六行:文件的大小

第七行:文件最后修改的时间

第八行:文件或者目录的名称


其次,让我们来看一下inode。

inode 译成中文就是索引节点。每个存储设备或存储设备的分区(存储设备是硬盘、软盘、U盘 ... ...
)被格式化为文件系统后,应该有两部份,一部份是inode,另一部份是Block,Block是用来存储数据用的。而inode呢,就是用来存储这些数据的信息,这些信息包括文件大小、属主、归属的用户组、读写权限等。inode为每个文件进行信息索引,所以就有了inode的数值。操作系统根据指令,能通过inode值最快的打找到相应的文件。

inode相同的文件是硬链接文件。

创建硬链接的文件的过程和视图如下:



图2  创建硬链接

如图2所示,给b.cpp创建了一个硬链接,他们的inode是相同的,都是5722389。为什么会出现这种情况呢?

原因很简单,inode值相同的文件,他们的关系是互为硬链接的关系。当我们修改其中一个文件的内容时,互为硬链接的文件的内容也会跟着变化。如果我们删除互为硬链接关系的某个文件时,其它的文件并不受影响。假如,我们修改了alex.cpp这个文件,则b.cpp也会跟着变化。简单来说就是,硬链接是一个指针,它指向相同的inode,然后再去找文件块。

创建软连接的视图和过程如下图:


图3  创建软链接

其中,decimal.cpp就是alex.cpp的软链接文件。软链接克服了硬链接的不足,没有任何文件系统的限制,任何用户可以创建指向目录的符号链接。因而现在更为广泛使用,它具有更大的灵活性,甚至可以跨越不同机器、不同 网络对文件进行链接。

软链接的话,是 不同inode,可以为目录创建,可以在不同文件系统创建。

注意:当我们修改链接文件的内容时,就意味着我们在修改源文件的内容。当然源文件的属性也会发生改变,但软链接文件的属性并不会发生变化。当我们把源文件删除后,软链接文件只存在一个文件名,因为失去了源文件,所以软链接所指文件也就不存在了。


本文出自 “天道酬情” 博客,请务必保留此出处http://decimal.blog.51cto.com/1484476/365748

猜你喜欢

转载自bestxiaok.iteye.com/blog/948431