• Linux文件系统中的链接


    转自:http://www.cnblogs.com/sujz/archive/2011/12/14/2288050.html
    • inode

         在讨论Linux系统的链接之前,不得不先说下inode。Linux文件系统中的每一个对象都有唯一的inode索引,每一个inode号和文件系统的 一个对象一一对应,要查看文件或目录的inode号可在ls命令中使用-i选项,每个目录下的.(当前目录)和..(上级目录)都是硬链接。如下面例子:

    root@vrlab726-desktop:~/Desktop# pwd
    /root/Desktop
    root@vrlab726-desktop:~/Desktop# ls -ial
    total 8672
    6447440 drwxr-xr-x 9 root root 4096 2011-12-14 19:27 .

         目录/root/Desktop的inode号为6447440,下面再看下/root/Desktop/test/..的inode号:

    root@vrlab726-desktop:~/Desktop# cd test
    root@vrlab726-desktop:~/Desktop/test# pwd
    /root/Desktop/test
    root@vrlab726-desktop:~/Desktop/test# ls -ial
    total 8
    7668672 drwxr-xr-x 2 root root 4096 2011-12-14 19:27 .
    6447440 drwxr-xr-x 9 root root 4096 2011-12-14 19:27 ..

          从中可以发现二者的inode号完全一样,即两者链接到物理磁盘上的同一个条目。

    • 硬链接

          一个inode号可以和任意多个硬链接对应,当所有硬链接都删除后,此inode号也将由系统自动删除,ls -ial命令的第三列即为和当前inode号关联的硬链接数目。创建硬链接的命令为:

    root@vrlab726-desktop:~/Desktop/test# touch file
    root@vrlab726-desktop:~/Desktop/test# echo "helloWorld" > file
    root@vrlab726-desktop:~/Desktop/test# more file
    helloWorld
    root@vrlab726-desktop:~/Desktop/test# ln file fileHardLink
    root@vrlab726-desktop:~/Desktop/test# ls -ial
    total 16
    7668672 drwxr-xr-x 2 root root 4096 2011-12-14 20:19 .
    6447440 drwxr-xr-x 9 root root 4096 2011-12-14 19:27 ..
    7668707 -rw-r--r-- 2 root root 11 2011-12-14 20:19 file
    7668707 -rw-r--r-- 2 root root 11 2011-12-14 20:19 fileHardLink

          从中可以看出硬链接都指向了同一个inode条目,因此所占用的空间相同。然而,Linux系统中的硬链接有两个限制:1.硬链接只能链接到文件,而不 能链接到文件夹。尽管.和..是系统创建的链接到目录的硬链接,但不允许用户(即使是root账户)创建链接到目录的硬链接。2.硬链接不能跨文件系统。

    • 软链接(符号链接)
          实际上,软链接比硬链接更为常用,符号链接是一种特殊的文件类型,它只是通过文件名链接到另一个文件,而不是直接链接到inode。如果链接的目标文件被删除了,那么会导致链接到该目标文件的所有软链接断开,不再可用。创建软连接的命令如下:
    root@vrlab726-desktop:~/Desktop/test# ln -s file fileSoftLink
    root@vrlab726-desktop:~/Desktop/test# ls -ial
    total 16
    7668672 drwxr-xr-x 2 root root 4096 2011-12-14 20:25 .
    6447440 drwxr-xr-x 9 root root 4096 2011-12-14 19:27 ..
    7668707 -rw-r--r-- 2 root root 11 2011-12-14 20:19 file
    7668707 -rw-r--r-- 2 root root 11 2011-12-14 20:19 fileHardLink
    7668708 lrwxrwxrwx 1 root root 4 2011-12-14 20:25 fileSoftLink -> file
          可以从两方面辨别出符号链接,ls -ial的第二列中第一个字母为l;在最后一列中的目标文件前有->符号。
     
    总结:
          硬链接基于inode实现,而软链接基于名称(或路径)实现;硬链接只允许用户创建链接到文件的硬链接,而软链接既可链接到文件又可链接到目录;硬链接 不允许跨文件系统(因不同文件系统中的inode号可能相同),而软链接由于通过路径实现,所以可以跨文件系统。
  • 相关阅读:
    第10组 Beta冲刺 (4/5)
    第10组 Beta冲刺 (3/5)
    第10组 Beta冲刺 (2/5)
    第10组 beta冲刺(1/5)
    软工实践个人总结
    第01组 每周小结(3/3))
    第01组 每周小结(2/3)
    第01组 每周小结 (1/3)
    第01组 beta冲刺总结
    第01组 beta冲刺(5/5)
  • 原文地址:https://www.cnblogs.com/super119/p/2288518.html
Copyright © 2020-2023  润新知