我们做的网站是优化型结构,网络科技服务有限公司,外国做动漫图片的网站叫什么名字,科技特长生44项白名单文章目录什么是链接链接用来干什么的硬链接和软链接的区别硬链接和软链接的图示总结我们知道文件都有文件名与数据#xff0c;这在 Linux 上被分成两个部分#xff1a;用户数据 (user data) 与元数据 (metadata)。用户数据#xff0c;即文件数据块 (data block)#xff0c;…
文章目录什么是链接链接用来干什么的硬链接和软链接的区别硬链接和软链接的图示总结我们知道文件都有文件名与数据这在 Linux 上被分成两个部分用户数据 (user data) 与元数据 (metadata)。用户数据即文件数据块 (data block)数据块是记录文件真实内容的地方而元数据则是文件的附加属性如文件大小、创建时间、所有者等信息。在 Linux 中元数据中的 inode 号inode 是文件元数据的一部分但其并不包含文件名inode 号即索引节点号才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用系统或程序通过 inode 号寻找正确的文件数据块。而有一种方法可以快速的寻找到数据元那就是软硬链接让我们一起来看一下吧。 什么是链接
链接简单说实际上是一种文件共享的方式是 POSIX 中的概念主流文件系统都支持链接文件。
链接用来干什么的
你可以将链接简单地理解为 Windows 中常见的快捷方式或是 OS X 中的替身Linux 中常用它来解决一些库版本的问题通常也会将一些目录层次较深的文件链接到一个更易访问的目录中。在这些用途上我们通常会使用到软链接也称符号链接。
硬链接和软链接的区别
首先从使用的角度讲两者没有任何区别都与正常的文件访问方式一样支持读写如果是可执行文件的话也可以直接执行。
那区别在哪呢在底层的原理上。
为了解释清楚我们首先在自己的一个工作目录下创建一个文件然后对这个文件进行链接的创建
$ touch myfile echo This is a plain text file. myfile
$ cat myfileThis is a plain text file.现在我们创建了一个普通的文件。然后我们对它创建一个硬链接并查看一下当前目录
$ ln myfile hard
$ ls -li25869085 -rw-r--r-- 2 unixzii staff 27 7 8 17:39 hard
25869085 -rw-r--r-- 2 unixzii staff 27 7 8 17:39 myfile在 ls 结果的最左边一列是文件的 inode 值你可以简单把它想成 C 语言中的指针。它指向了物理硬盘的一个区块事实上文件系统会维护一个引用计数只要有文件指向这个区块它就不会从硬盘上消失。
你也看到了这两个文件就如同一个文件一样inode 值相同都指向同一个区块。
然后我们修改一下刚才创建的 hard 链接文件
$ echo New line hard
$ cat myfileThis is a plain text file.
New line可以看到这两个文件果真就是一个文件。 下面我们看看软链接也就是符号链接和它有什么区别。
$ ln -s myfile soft
$ ls -li25869085 -rw-r--r-- 2 unixzii staff 36 7 8 17:45 hard
25869085 -rw-r--r-- 2 unixzii staff 36 7 8 17:45 myfile
25869216 lrwxr-xr-x 1 unixzii staff 6 7 8 17:47 soft - myfile诶你会发现这个软链接的 inode 竟然不一样啊并且它的文件属性上有一个 l 的 flag这就说明它与之前我们创建的两个文件根本不是一个类型。
下面我们试着删除 myfile 文件然后分别输出软硬链接的文件内容
$ rm myfile
$ cat hardThis is a plain text file.
New line
$ cat softcat: soft: No such file or directory之前的硬链接没有丝毫地影响因为它 inode 所指向的区块由于有一个硬链接在指向它所以这个区块仍然有效并且可以访问到。 然而软链接的 inode 所指向的内容实际上是保存了一个绝对路径当用户访问这个文件时系统会自动将其替换成其所指的文件路径然而这个文件已经被删除了所以自然就会显示无法找到该文件了。
为验证这一猜想我们再向这个软链接写点东西
$ echo Something soft
$ lshard myfile soft可以看到刚才删除的 myfile 文件竟然又出现了这就说明当我们写入访问软链接时系统自动将其路径替换为其所代表的文件的绝对路径并直接访问那个路径了。软链接 soft 代表的是文件 myfile访问软链接文件 soft实则是访问文件 myfilemyfile 不存在则自动创建所以说文件 myfile 又出现了。
硬链接和软链接的图示 总结
硬链接 与普通文件没什么不同inode 都指向同一个文件在硬盘中的区块 软链接 保存了其代表的文件的绝对路径是另外一种文件在硬盘上有独立的区块访问时替换自身路径。