分类: LINUX
2009-04-28 15:17:05
索引节点inode:Linux为每个文件分配一个称为索引节点的编号,可以将inode简单理解成一个指针,它永远指向本文件在物理磁盘上的具体存储位置。系统是通过索引节点(而不是文件名)来定位每一个文件的。
硬连接:1个inode编号肯定和一个文件的数据存储区一一对应。那么一个文件系统中两个或更多个不同的文件名能否对应同一个文件呢?答案是肯定的。我们知道inode编号是记录在文件名对应的目录项中的,我们可以使两个或多个文件的目录项具有相同的inode值,实际上就是使它们对应着同一个数据存储区。有几个目录项具有相同的inode号,我们就说这个文件有几个硬连接(hardlink),对于普通文件,ls -l命令的连接计数count域的数值就是本文件拥有的硬连接数。硬连接可以通过ln命令建立。建立硬连接实际上只是增加了一个目录项,但并未复制文件数据区,原文件的数据区由两个文件共享。这样一方面能够节约大量磁盘空间,同时可以保证两个文件能同步更新。
# ln /home/zyd/mytext hardlink_mytext
ls -il’可以显示文件的inode(在下面最左边):
262457 -rw-rw-r– 2 zyd zyd 17 Nov 3 14:50 hardlink_mytext
262457 -rw-rw-r– 2 zyd zyd 17 Nov 3 14:50 mytext
连接计数count:连接连接计数域表示有几个文件共享同一数据存储区,即几个硬连接(hardlink_mytext和mytext互为硬连接)。如上面的例子中hardlink_mytext和mytext文件的count值都是2。当删除硬连接文件是系统先计算count-1的值,如果大于1则仅删除目录项并修改硬连接数;如果为1则删除目录项,另一文件变为普通文件,修改硬连接数;如果为0则直接删除文件。我们可以通过建立硬连接来保护重要的文件,避免被误删除。
符号连接:文件的路径指向,非常像windows下的快捷方式。
符号连接和硬连接的区别:
符号连接是文件的路径指向,它甚至不需要原文件的存在(这称之为断链);硬连接指向同一数据区,此数据区必须存在。另外不允许为目录建立硬连接,硬连接也不能跨文件系统。