zoukankan      html  css  js  c++  java
  • Linux 软链接和硬链接

    系统链接文件

    文件有文件名和数据,在Linux上被分成两个部分:用户数据(user data)与元数据(metadata)

    用户数据:文件数据块(data block),数据块是记录文件真实内容的地方,我们将其称为Block
    元数据:文件的附加属性,例如:文件大小,创建时间,属组,属主...等,我们称其为Inode 元数据所占的磁盘空间叫inode,真实数据所占的磁盘空间叫block

    block 是有单位的,一个block 是4 k,他的大小是可以修改的

    小文件过多,可能导致inode空间被占满,这样block 就不能使用了

    小文件过多也会导致很多block没有被占满

    小文件过多,inode先被占满,文件很大,block先被占满

    磁盘清理是释放没有占满的block,并不会删除用户的真实数据

    区别

    1. 创建命令不同

    硬链接: ln 源 目标 (目标指向源)
    软链接: ln -s

    2. ⽬录⽆法创建硬链接,可以创建软链接,硬链接不能跨系统的分区,软链接可以

    3. 硬链接⽂件与源⽂件的inode号相同,软链接不同

    4. 软链接如果删除源⽂件,所有软链接⽂件失效,硬链接如果删除源⽂件,其他硬链接⽂件均可以

    硬链接和源文件是无法区分的,两个文件具有相同的大小、创建时间等信息

    df -h 使用了 -h 选项,因此文件系统的各种容量数据,会以人们习惯的单位(通常使用 GB 或 MB kb)显示出来
    df -i 不用硬盘容量显示,而是以含有 inode 的数量来显示

    在Linux中,inode是文件元数据的一部分,但其并不包含文件名(文件名在本地的数据库里面),inode号即索引节点号

    文件名仅是为了方便人们的记忆和使用,系统或者程序通过inode号寻找正确的文件数据块。

    软链接(符号链接) 软链接相当于windows的快捷⽅式(一个inode号指向另一个不同的inode号),软链接⽂件会将 inode 指向源⽂件的 block 1.那么当我们对⼀个⽂件创建多个软链接时,其实就是多个 inode 指向同⼀个 block 。 2.那么当我们 删除软链接⽂件时,其实只是删除了⼀个 inode 的指向,并不会对源⽂件造成影响。 3.如果我们删除的 是源⽂件,那么该⽂件的所有软链接⽂件都会失效。

    硬链接

    若一个inode号对应多个文件名,则称这些文件为硬链接。换句话说,硬链接就是同一个文件使用了多个别名

    cp和硬链接的区别
    cp拷贝的源文件和目标文件inode号不同,硬链接文件与源文件inode号相同,cp拷贝的源文件和目标文件的硬链接数是1,硬链接文件的硬链接数是2

    软链接的作用
    1.软件升级

    目录--升级 一次处理多个指向问题

    [root@oldboy ~]# mkdir /app
    [root@oldboy ~]# mkdir /app/nginx-1.16.1
    [root@oldboy ~]# ln -s /app/nginx-1.16.1/ /app/nginx 链接文件不存在才能创建软连接
    [root@oldboy ~]# cd /app/
    [root@oldboy app]# ll
    total 0
    lrwxrwxrwx 1 root root 18 May 1 09:20 nginx -> /app/nginx-1.16.1/
    drwxr-xr-x 2 root root 26 May 1 09:22 nginx-1.16.1

    [root@oldboy app]# mkdir nginx-1.17.2 wget下载新版本nginx
    [root@oldboy app]# ll
    total 0
    lrwxrwxrwx 1 root root 18 May 1 09:20 nginx -> /app/nginx-1.16.1/
    drwxr-xr-x 2 root root 26 May 1 09:22 nginx-1.16.1
    drwxr-xr-x 2 root root 6 May 1 09:28 nginx-1.17.2
    [root@oldboy app]# rm nginx
    [root@oldboy app]# ln -s nginx-1.17.2/ nginx 删除旧的软连接,创建新的软连接,如果删除源文件,链接高亮闪烁,失效
    [root@oldboy app]# ll
    total 0
    lrwxrwxrwx 1 root root 13 May 1 09:29 nginx -> nginx-1.17.2/
    drwxr-xr-x 2 root root 26 May 1 09:22 nginx-1.16.1
    drwxr-xr-x 2 root root 6 May 1 09:28 nginx-1.17.2
    [root@oldboy app]# rm -rf nginx-1.16.1/ 一次处理多个指向问题
    [root@oldboy app]# ll
    total 0
    lrwxrwxrwx 1 root root 13 May 1 09:29 nginx -> nginx-1.17.2/
    drwxr-xr-x 2 root root 6 May 1 09:28 nginx-1.17.2

    2.设置开机自启动
    ln -s /usr/lib/systemd/system/xx.services /etc/systemd/system/multi-user.target.wants/xx.services

    通过硬链接数判断一个文件的类型
    [root@lb01 ~]# ll
    total 8
    drwxr-xr-x 2 root root 6 Feb 2 12:52
    -rw-------. 1 root root 1444 May 1 2020 anaconda-ks.cfg
    drwxr-xr-x 3 root root 16 Feb 2 12:53 kk
    -rw-r--r-- 1 root root 469 May 1 2020 xiugaizhuji.sh

    1.硬链接数是1,那么这就是一个普通的文件
    2.硬链接数是2,那么这就是一个硬链接文件或者空目录
    3.硬链接数是N(N>2),那么这就是一个目录

  • 相关阅读:
    2018-04-13Java编程夯实学习心得(3)
    2018-03-28JavaScript学习心得
    2018-03-27mysql学习心得
    JavaScript-作用域
    样式切换图
    购物车结算
    Visual Studio Code快捷键操作
    复选框
    win10锁屏界面无法设置隐藏
    轮播图
  • 原文地址:https://www.cnblogs.com/syy1757528181/p/12813160.html
Copyright © 2011-2022 走看看