Linux的文件系统(硬盘)分为2部分:inode table 与 data area。inode table上有许多的inode, 每个inode分别记录一个档案的属性与这个档案分布在哪些datablock上(也就是我们说的指针)。inode有两个功能:记录档案属性和指针。data area由很多datablock构成,data area记录文件的真实内容。
硬链接
Hard Link 只是在某个目录下新增一个该档案的关连数据而已!
1.举个例子来说,我的 /home/vbird/crontab 为一个 hard link 的档案,他连结到 /etc/crontab 这个档案,也就是说,其实 /home/vbird/crontab 与 /etc/crontab是同一个档案,只是有两个目录( /etc 与 /home/vbird )记录了 crontab 这个档案的关连数据罢了!也就是说,我由 /etc 的 Block 所记录的关连数据可知道 crontab 的 inode 放置在 A 处,而由 /home/vbird 这个目录下的关连数据,contab 同样也指到 A处的 inode! 所以,crontab 这个档案的 inode 与 block 都没有改变,有的只是有两个目录记录了关连数据.2.使用 hard link 设定连结文件时,磁盘的空间与 inode 的数目都不会改变!由上面的说明来看,我们可以知道, hard link 只是在某个目录下的 block 多写入一个关连数据,所以当然不会用掉 inode 与磁盘空间。3.当我们修改其中一个文件的内容时,互为硬链接的文件的内容也会跟着变化。如果我们删除互为硬链接关系的某个文件时,其它的文件并不受影响.4.由于 hard link 是在同一个 partition 上面进行数据关连的建立,所以 hard link 是有限制的: a. 不能跨 Filesystem. b. 不能 link 目录。 5.假设已经建立若干me.txt的硬链接:ln me.txt hard_me.txt ……。 之后运行 ls -l: -rw-r--r-- 3 younes younes 40 2009-12-03 16:36 hard_me.txt ,其中橙色底纹的数字代表指向该文件硬链接的数目。
软链接
1. 软链接也叫符号链接,他和硬链接有所不同,软链接文件只是其源文件的一个标记。当我们删除了源文件后,链接文件不能独立存在,虽然仍保留文件名,但我们却不能查看软链接文件的内容了.
2. Symbolic Link 与 Windows 的快捷方式可以给他划上等号,由 Symbolic link 所建立的档案为一个独立的新的档案,所以会占用调inode与block。