《MacTalk•人生元编程》一一1.7 硬链接

1.7 硬链接

基于inode技术,Linux允许多个文件名同时指向一个inode。好处就是,我们可以用不同的文件名去访问同一个文件,每次操作对文件内容的影响会波及所有“副本”,删除掉一个“副本”,不会影响其他文件。增加一个硬链接文件,仅仅是inode里的“Links”属性值加1,删除一个硬链接文件,属性值减1。只有“Links”的值为0时,文件才会被彻底删除,回收其占用的空间。

如何创建一个硬链接文件?非常简单:

ln sourcefile destfile

其中,前者是源文件,后者是目标文件。创建完成后,使用stat命令查看其中之一,就会发现Links的值变为2了,用ls -i查看文件,你会发现这两个文件的inode号是相同的。

如果我们使用Vim在同一个缓冲区(buffer)中打开这两个文件:

vim sourcefile
:new destfile

以上命令会在Vim中打开两个窗口,你在操作其中一个文件时,会发现另一个窗口是同步联动的。

硬链接的应用场景比较广泛,比如多人修改同一个文件、重要文件备份、文件更新、节省磁盘空间等。这些方便的特性都源于inode的设计思想。

注意:我们无法为目录创建硬链接,但是操作系统利用特权偷偷在每个目录下创建了两个硬链接,一个是“.”,另一个是“..”。使用ls -ai命令可以看到这两个硬链接目录和inode号,前者代表当前目录,后者代表当前目录的父级目录。

硬链接不创建inode,所以无法跨文件系统,这一点可以由软链接实现。

时间: 2024-08-29 11:28:58

《MacTalk•人生元编程》一一1.7 硬链接的相关文章

《MacTalk•人生元编程》一一2.1 设计巨匠——乔纳森·艾维

2.1 设计巨匠--乔纳森·艾维 MacTalk•人生元编程今天看到一篇新闻,说苹果的CEO库克参加<华尔街日报>主办的D11科技大会时,谈了一些大家关心的热点问题,包括对Google Glass的看法,苹果的可穿戴技术策略(iWatch?),iOS平台为第三方开放更多的API,乔纳森·艾维(Jonathan Ive)主导iOS人机界面的设计等. Google的眼镜和Apple的手表离我这样的土老冒比较远,即使今秋发布iWatch,估计我也就是擦擦口水看一眼的份儿.第三方API呢,有新的用就是

《MacTalk•人生元编程》一一1.1 Linux的文件系统王国

1.1 Linux的文件系统王国 MacTalk•人生元编程在这个系列中和大家聊聊Linux的文件.索引节点.文件类型.软硬链接等内容,其中很多细节也是我使用了很长时间Linux后才真正掌握,希望大家不用那么久. 为什么是Linux?我觉得写技术的东西还是相对严谨一些好,虽然Unix.Linux.OS X一脉相承,但在具体命令上还是会有些差异,这个系列文章里所有的命令和显示结果都是在Linux上进行的,大家可以对照在Mac上试试,大部分一致,少部分不同. 在开始讲Linux王国的臣民之前,先介绍

《MacTalk•人生元编程》导读

前言 MacTalk•人生元编程在这本书付印的前一天,本书的责任编辑杨海玲老师找到了我说:书要出版了,你要不要写个前言和读者说两句?我说:来得及吗?杨老师郑重地看着我点了点头.好吧,那就说两句,于是就有了这一篇前言. 我小学四年级之前一直在农村居住,那时候没见过汽车,只见过马车和小推车.搬到城市之后才发现,这世上居然有汽车这种交通工具,那时我的理想是当一名212吉普车的司机.后来见的车多了,觉得司机不够神气,我希望拥有一辆自己的汽车.这个理想在长大后也实现了.但是我从没有想过自己会出版一本书!今

《MacTalk•人生元编程》一一1.2 inode元信息

1.2 inode元信息 上一篇文章中我们讲到了索引节点inode,每个文件都有一个唯一的inode对象,描述了文件的元信息.inode与文件是生死相依.一损俱损的关系,生命周期一致.很多痛恨身份证的人都说:"老子一生下来就有身份了,干嘛还又给个身份证?"Mac君对这种态度是赞同的.肯定的.欣赏的,但inode不一样,它就像你的指纹,属于文件的一部分并定义文件,这就像人生元编程一样,有了"元"的意味.inode由一个数据结构组成,主要包含这样一些字段: i_hash

《MacTalk•人生元编程》一一1.6 二逼文件

1.6 二逼文件 好,目录文件就介绍到这里,后续介绍的文件类型平时操作很少用到,我把它们统称为二逼文件类型,光荣入选的有以下几个. 块设备文件和字符设备文件,这些文件一般隐藏在/dev目录下,昼伏夜出,平时你感觉不到它们的存在,但是你想进行设备读取和外设交互时,就是它们大显身手的时候.比如磁盘光驱就是块设备文件,串口设备则属于字符设备文件.系统中的所有设备要么是块设备文件,要么是字符设备文件,无一例外.FIFO,江湖人称命名管道,主要用于进程间通讯.比如使用mkfifo命令可以创建一个FIFO文

《MacTalk•人生元编程》一一2.2 独自在家续篇兼答读者问

2.2 独自在家续篇兼答读者问 很多人没事就抱怨北京的空气,但是懂得变化的人会知道,何时赞美,何时吐槽. 总结一下,北京的空气变化大概是这个样子: 在月黑霾浓的深夜,伸手只见五指,这时一个叫做"大风"的环保工作者出现了,经过一夜激情,第二天阳光明媚,天蓝云白,PM2.5指数50,朋友圈多了很多蓝白之物.你极目远眺,蓝天和大地的交界处有一层透明的薄雾.第二天,深蓝变浅蓝,天地间的白雾变为灰色,PM2.5指数70.第三天,浅蓝变灰白,天地间夹了一层薄薄的雾霭,PM2.5升到120左右.第四

《MacTalk•人生元编程》一一1.3 inode的存储

1.3 inode的存储 文件会占用硬盘空间这事大家都清楚(注意,是空间,不是重量,无论您是复制100 GB进来,还是清除100 GB出去,硬盘都在那里,份量既不增一分,也不减一克),那么inode存放在哪里呢?当然也是在硬盘上,Linux是很聪明的,在分区和格式化硬盘的时候,就把硬盘分为了数据区和索引节点区.数据区存放普通文件,索引节点区存放inode对象.每个inode对象的大小一般是128字节或256字节,这个数值可以在格式化的时候设定. 如何查看inode的使用情况呢?可以执行如下命令:

《MacTalk•人生元编程》一一1.5 文艺文件

1.5 文艺文件 写到这儿你就知道,无论是Unix还是Linux,都是相当文艺范儿的.普通的说完了,就该是文艺的了,它就是大名鼎鼎的目录文件(directory file).这个概念对于用惯Windows的用户来说不太容易理解,文件是文件,目录是目录,岂可混为一谈?好吧,它文艺就文艺在这里了. 目录文件同样是Linux文件中的一种,它们包含了各自目录下的文件名和指向这些文件的指针,打开目录事实上就是打开目录文件,只要有访问权限,你就可以随意访问这些目录下的文件,但是只有内核的进程能够修改它们.

《MacTalk•人生元编程》一一1.8 软链接

1.8 软链接 软链接理解起来比较容易,类似Windows系统中的快捷方式. 软链接会创建新的inode,inode里主要记录了源文件的路径.当访问软链接文件时,系统会帮你自动指向源文件,无论你操作的是源文件,还是软链接文件,其实你最终操作的都是源文件,源文件删除了,软链接文件就成了无本之木,也就毫无意义,强制访问的后果就是No such file or directory. 创建软链接的命令如下: ln -s sourcefile destfile 大家可以尝试用stat命令查看这两个文件的i