Linux文件链接
1、inode的作用
文件具体数据都储存在"块"(在block区)中,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode(在inode区),中文译名为"索引节点"。每个inode都有一个号码,操作系统用inode号码来识别不同的文件。
2、indoe包含的信息
可以使用stat命令来查看文件的inode信息:stat 文件
inode包含文件的元信息,具体来说有以下内容:
* 文件的字节数
* 文件拥有者的User ID
* 文件的Group ID
* 文件的读、写、执行权限
* 文件的时间戳,共有三个:
ctime指inode上一次变动的时间
mtime指文件内容上一次变动的时间
atime指文件上一次打开的时间。
* 链接数,即有多少文件名指向这个inode
* 文件数据block的位置
注: inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是block区,存放文件数据;另一个是inode区,存放inode所包含的信息。
由于每个文件都必须有一个inode,因此有可能发生inode已经用光,但是硬盘还未存满的情况。这时,就无法在硬盘上创建新文件。
3、硬链接
一般情况下,文件名和inode号码是"一一对应"关系,每个inode号码对应一个文件名。但是,Unix/Linux系统允许,多个文件名指向同一个inode号码。这意味着,可以用不同的文件名访问同样的内容;对文件内容进行修改,会影响到所有文件名;但是,删除一个文件名,不影响另一个文件名的访问。这种情况就被称为"硬链接"(hardlink)。
创建硬链接方式:ln 源文件 目标文件
运行该命令后,源文件与目标文件共用一个inode号码,即都指向同一个inode。inode信息中有一项叫做"链接数",记录指向该inode的文件名总数,这时就会增加1。反过来,删除一个文件名,就会使得inode节点中的"链接数"减1。当这个值减到0,表明没有文件名指向这个inode,系统就会回收这个inode号码,以及其所对应block区域。
硬链接的常见用处:在工作文件中有代码文件A,在备份文件中设置代码文件A的硬链接文件B,这样就起到了随时对代码文件A起到一个备份作用。
4、软链接
软链接类似于Windows系统下的快捷方式。
创建软链接方式:ln -s 源文件或目录 目标文件或目录
可以使用ls -l命令查看软链接文件指向的源文件的路径。为了增强程序可移植性,通常情况下我们创建符号链接时源文件使用绝对路径而不使用相对路径。
若文件A是文件B的软链接,意味着文件A依赖于文件B。如果删除了文件B,则文件A会变成无效文件(即使文件A仍然存在)。这是软链接与硬链接最大的不同:软链接指向的是文件的路径名而不是文件的inode号码,文件B的inode号码也不会因为软链接的存在而增加。
看完这篇博客如果想对硬链接有更深刻的认识,请看 /个人分类/项目集锦/备份文件 博客