• Linux 硬链接、软链接


    索引节点 inode(index node)

    我们知道文件都有文件名与数据,这在 Linux 上被分成两个部分:用户数据 (user data) 与元数据 (metadata)。用户数据,即文件数据块 (data block),数据块是记录文件真实内容的地方;而元数据则是文件的附加属性,如文件大小、创建时间、所有者等信息。在 Linux 中,元数据中的 inode 号(inode 是文件元数据的一部分但其并不包含文件名,inode 号即索引节点号,inode中保存着文件创建时间(ctime)、修改时间(mtime) 、文件大小、属主、归属的用户组、读写权限、数据所在block号等信息)才是文件的唯一标识而非文件名。文件名仅是为了方便人们的记忆和使用,系统或程序通过 inode 号寻找正确的文件数据块。

    • 在文件系统中,每一个文件都有一个特定的 inode
    • 可以是多个文件名指向一个 inode(硬链接)
    • 使用 ls -i 的命令可以查看每个文件或者目录对应的 inode
      $ ls -li
      total 12
      809433 drwxrwxr-x  2 eko eko 4096 May  6 13:12 abc
      812347 -rwxrwxr-x  1 eko eko  873 May  6 08:48 admin.sh
      812326 -rw-rwxr--+ 1 eko eko   21 May  4 20:56 facl.txt

    硬链接

    为同一份数据多添加一个inode,两个inode指向同一份数据

    使用方法 : 硬链接 (实体链接)ln   source  target

    eg:将 当前目录下 admin.sh 创建一个 硬链接 到./abc/admin.sh

    ln ./admin.sh ./abc/admin.sh

    此时我们查看文件信息

    $ ls -li
    total 4
    812347 -rwxrwxr-x 2 eko eko 873 May  6 08:48 admin.sh

    我们可以看到文件被引用的次数为 2,且两个文件名指向同一个inode

    硬链接有以下注意

    • 只能对文件创建,不能应用于目录
    • 不能跨文件系统
    • 创建硬链接会增加文件被链接次数

    符号链接(软链接)

    符号链接的作用类似于Window中快捷方式,创建一个文件名指向原来文件

    使用方法:ln -s   source  target 

    eg:将 当前目录下 facl.txt 创建一个 软链接 到./abc/facl.sh

    $ ln -s ./facl.txt ./abc/facl

     切换到abc目录下查看新建号的软连接

    lrwxrwxrwx 1 eko eko  10 May  6 13:30 facl -> ./facl.txt

    通过ls -li 命令我们可以看到两个文件名指向的inode不一样

    软连接注意事项

    • 可以应用于目录
    • 可以跨文件系统
    • 不会增加被链接文件的链接次数
    • 其大小为指定路径所包含字符串大小

    另外介绍两个查看磁盘空间的命令

    du 查看空间

    du命令也是查看使用空间的,但是与df命令不同的是Linux du命令是对文件和目录磁盘使用的空间的查看,还是和df命令有一些区别的。

    du [选项][文件]

    选项

    -a或-all 显示目录中个别文件的大小。
    -b或-bytes 显示目录或文件大小时,以byte为单位。
    -c或--total 除了显示个别目录或文件的大小外,同时也显示所有目录或文件的总和。
    -k或--kilobytes 以KB(1024bytes)为单位输出。
    -m或--megabytes 以MB为单位输出。
    -s或--summarize 仅显示总计,只列出最后加总的值。
    -h或--human-readable 以K,M,G为单位,提高信息的可读性。
    -x或--one-file-xystem 以一开始处理时的文件系统为准,若遇上其它不同的文件系统目录则略过。
    -L<符号链接>或--dereference<符号链接> 显示选项中所指定符号链接的源文件大小。
    -S或--separate-dirs 显示个别目录的大小时,并不含其子目录的大小。
    -X<文件>或--exclude-from=<文件> 在<文件>指定目录或文件。
    --exclude=<目录或文件> 略过指定的目录或文件。
    -D或--dereference-args 显示指定符号链接的源文件大小。
    -H或--si 与-h参数相同,但是K,M,G是以1000为换算单位。
    -l或--count-links 重复计算硬件链接的文件。

    实例:

    #查看当前目录及其子目录中所有文件和目录大小
    $ du -ah
    #指定查看当前目录下admin.sh文件大小
    $ du -h ./admin.sh

    df 显示磁盘分区上的可使用的磁盘空间。默认显示单位为KB

    df(选项)(参数)
    -a或--all:包含全部的文件系统;
    --block-size=<区块大小>:以指定的区块大小来显示区块数目;
    -h或--human-readable:以可读性较高的方式来显示信息;
    -H或--si:与-h参数相同,但在计算时是以1000 Bytes为换算单位而非1024 Bytes;
    -i或--inodes:显示inode的信息;
    -k或--kilobytes:指定区块大小为1024字节;
    -l或--local:仅显示本地端的文件系统;
    -m或--megabytes:指定区块大小为1048576字节;
    --no-sync:在取得磁盘使用信息前,不要执行sync指令,此为预设值;
    -P或--portability:使用POSIX的输出格式;
    --sync:在取得磁盘使用信息前,先执行sync指令;
    -t<文件系统类型>或--type=<文件系统类型>:仅显示指定文件系统类型的磁盘信息;
    -T或--print-type:显示文件系统的类型;
    -x<文件系统类型>或--exclude-type=<文件系统类型>:不要显示指定文件系统类型的磁盘信息;
    --help:显示帮助;
    --version:显示版本信息

    实例:

    [root@LinServ-1 ~]# df -h
    文件系统              容量  已用 可用 已用% 挂载点
    /dev/sda2             140G   27G  106G  21% /
    /dev/sda1             996M   61M  884M   7% /boot
    tmpfs                1009M     0 1009M   0% /dev/shm
    /dev/sdb1             2.7T  209G  2.4T   8% /data1
  • 相关阅读:
    Robotium源码分析之Instrumentation进阶
    路飞学城Python-Day115
    路飞学城Python-Day114
    路飞学城Python-Day113
    【逻辑回归的特征筛选方法】
    路飞学城Python-Day108
    路飞学城Python-Day107
    【算法学习】神经网络
    路飞学城Python-Day100
    路飞学城Python-Day101
  • 原文地址:https://www.cnblogs.com/xiaoliwang/p/9000742.html
Copyright © 2020-2023  润新知