Linux硬链接和软链接用来做什么
导读:本文共2216字符,通常情况下阅读需要7分钟。同时您也可以点击右侧朗读,来听本文内容。按键盘←(左) →(右) 方向键可以翻页。
摘要: Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。什么是链接?链接简单说实际上是一种文件共享的方式,是 POSIX 中的概念,主流文件系统都支持链接文件。它是用来干什么的?你可以将链接简单地理解为 Windows 中常见的快捷方式(或是 OS X 中的替身),Linu... ...
目录
(为您整理了一些要点),点击可以直达。Linux链接分两种,一种被称为硬链接(Hard Link),另一种被称为符号链接(Symbolic Link)。默认情况下,ln命令产生硬链接。
什么是链接?
链接简单说实际上是一种文件共享的方式,是 POSIX 中的概念,主流文件系统都支持链接文件。
它是用来干什么的?
你可以将链接简单地理解为 Windows 中常见的快捷方式(或是 OS X 中的替身),Linux 中常用它来解决一些库版本的问题,通常也会将一些目录层次较深的文件链接到一个更易访问的目录中。在这些用途上,我们通常会使用到软链接(也称符号链接)。
内容
软链接和硬链接的区别是? 下面我们进入正题,来探讨一下软硬两种链接到底有什么区别?
首先,从使用的角度讲,两者没有任何区别,都与正常的文件访问方式一样,支持读写,如果是可执行文件的话也可以直接执行。
那区别在哪呢?在底层的原理上。
为了解释清楚,我们首先在自己的一个工作目录下创建一个文件,然后对这个文件进行链接的创建:
$touchmyfile&&echo"Thisisaplaintextfile.">myfile$catmyfileThisisaplaintextfile.
现在我们创建了一个普通地不能再普通的文件了。然后我们对它创建一个硬链接,并查看一下当前目录:
$lnmyfilehard$ls-li25869085-rw-r--r--2unixziistaff277817:39hard25869085-rw-r--r--2unixziistaff277817:39myfile
在 ls 结果的最左边一列,是文件的 inode 值,你可以简单把它想成 C 语言中的指针。它指向了物理硬盘的一个区块,事实上文件系统会维护一个引用计数,只要有文件指向这个区块,它就不会从硬盘上消失。
你也看到了,这两个文件就如同一个文件一样,inode 值相同,都指向同一个区块。
然后我们修改一下刚才创建的 hard 链接文件:
$echo"Newline">>hard$catmyfileThisisaplaintextfile.Newline
可以看到,这两个文件果真就是一个文件。 下面我们看看软链接(也就是符号链接)和它有什么区别。
$ln-smyfilesoft$ls-li25869085-rw-r--r--2unixziistaff367817:45hard25869085-rw-r--r--2unixziistaff367817:45myfile25869216lrwxr-xr-x1unixziistaff67817:47soft->myfile
诶,你会发现,这个软链接的 inode 竟然不一样啊,并且它的文件属性上也有一个 l 的 flag,这就说明它与之前我们创建的两个文件根本不是一个类型。
下面我们试着删除 myfile 文件,然后分别输出软硬链接的文件内容:
$rmmyfile$cathardThisisaplaintextfile.Newline$catsoftcat:soft:Nosuchfileordirectory
之前的硬链接没有丝毫地影响,因为它 inode 所指向的区块由于有一个硬链接在指向它,所以这个区块仍然有效,并且可以访问到。 然而软链接的 inode 所指向的内容实际上是保存了一个绝对路径,当用户访问这个文件时,系统会自动将其替换成其所指的文件路径,然而这个文件已经被删除了,所以自然就会显示无法找到该文件了。
为验证这一猜想,我们再向这个软链接写点东西:
$echo"Something">>soft$lshardmyfilesoft
可以看到,刚才删除的 myfile 文件竟然又出现了!这就说明,当我们写入访问软链接时,系统自动将其路径替换为其所代表的绝对路径,并直接访问那个路径了。
</div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
Linux硬链接和软链接用来做什么的详细内容,希望对您有所帮助,信息来源于网络。