我正在读马克·贝茨的命令行介绍。
在第一章中,他提到硬链接不能跨越文件系统。
关于硬链接,需要注意的一点是,它们只在当前的文件系统上工作。无法在其他文件系统上创建指向文件的硬链接。要做到这一点,需要使用符号链接,第1.4.3节。
我只知道一个文件系统。从根开始的(/
)。这种硬链接不能跨越文件系统的说法对我来说毫无意义。
维基百科的关于Unix文件系统的文章也没有帮助。
发布于 2016-06-18 05:34:48
希望我能以一种对你来说有意义的方式来回答这个问题。Linux中的文件系统通常由一个分区组成,分区以多种方式格式化(必须喜欢选择!)你把你的文件储存在上面。不管是你的系统文件还是你的个人文件..。它们都存储在一个文件系统中。这部分你似乎明白了。
但是,如果您将硬盘分区为多个分区(比如Apple将其分割成碎片),或者添加一个额外的硬盘驱动器(可能是USB棒),该怎么办?为了便于论证,它们都有文件系统。
当您查看计算机上的文件时,您将看到分区文件系统上的数据的可视化表示。每个文件名对应于所谓的inode,而inode是数据在幕后真正存在的地方。硬链接允许您有多个指向同一个inode的“文件名”(因为缺少更好的描述)。只有当这些硬链接位于同一个文件系统上时,才能工作。一个符号链接指向“文件名”,然后链接到保存数据的inode。原谅我粗俗的艺术品,但希望这能解释得更好。
image.jpg image2.jpg
\ /
[your data]
在这里,image.jpg和image2.jpg都直接指向您的数据。它们都是硬链接。然而..。
image.jpg <----------- image2.jpg
\
[your data]
在这个(粗糙的)示例中,image2.jpg没有指向您的数据,而是指向image.jpg.这是到你的数据的链接。
符号链接可以跨文件系统边界工作(假设文件系统被附加和挂载,就像你的usb接口)。然而,一个硬链接不能。它不知道您的其他文件系统上有什么,也不知道您的数据存储在哪里。
希望这有助于更好地理解。
发布于 2016-06-18 06:09:30
发布于 2016-06-18 14:25:57
硬链接具有保持目标存活的作用。只要任何硬链接都是可访问的,系统就会确保其目标不能被释放。因此,有必要在系统试图确定是否存在对某个inode的引用时,安装所有可能包含指向特定inode的硬链接的媒体。
考虑到inode的生存期通常是通过保持引用计数而不是扫描引用来确定的,因此可能有可能安排一些事情,即可以独立使用两个或多个相互拥有链接的文件系统,条件是不需要使用连接在系统之间的链接,并且不需要在其中一个系统上使用fsck。但是,如果inode依赖于其中一个系统受到干扰,使该系统再次有用的唯一方法是使用一种fsck操作,它可以扫描两个文件系统以获得引用。由于这种限制,虽然允许两个相互链接的文件系统可以独立使用是可能的,但这样做的好处可能太有限,不值得使用。
https://unix.stackexchange.com/questions/290525
复制相似问题