• 基本命令学习 -(4)链接文件:ln命令


    关注「开源Linux」,选择“设为星标”

    回复「学习」,有我为您特别筛选的学习资料~

    前言

    在Windows系统中,快捷方式是指向原始文件的一个链接文件,原文件一旦被删除或剪切到其他地方,会导致链接文件失效。

    而Linux中的链接文件是不同于Windows的快捷方式,Linux的链接文件分为软链接与硬链接。

    硬链接

    可以把硬链接理解为“指向原始文件inode的指针”,系统不为它分配独立的inode和文件。硬链接文件与原文件其实是同一个文件,只是名称不同。

    下面我们举个例子:

    [root@qll ~]# ll -i /etc/passwd
    67544416 -rw-r--r--. 1 root root 882 2月   5 11:50 /etc/passwd
    

    使用ln命令在当前目录下创建/etc/passwd文件的硬链接,然后观察其文件属性:

    
    [root@qll ~]# ln /etc/passwd passwd_test
    [root@qll ~]# ll -i /etc/passwd passwd_test
    67544416 -rw-r--r--. 2 root root 882 2月   5 11:50 /etc/passwd
    67544416 -rw-r--r--. 2 root root 882 2月   5 11:50 passwd_test
    

    可以看出,这两个文件名关联的inode号完全相同,都是67544416,所以它们指向的是同一个文件。

    观察上面输出的第二个字段中的第一位,它们都是“-”,说明文件类型为普通文件,链接类型为硬链接。

    观察第三个字段,由1变成了2。这个字段叫作“链接数”,它说明有多少个文件名链接到同一个文件的inode。

    硬链接的特点及局限性

    • 几乎不额外占用空间

      硬链接只是在目录中添加一条包含文件名和对应inode的记录,所以它几乎不会额外占用磁盘容量

    • 只要还有一个文件名引用着文件,文件就不会被真正删除

    • 由于技术局限性,不能跨文件系统创建硬链接

    • 不能链接目录

    软链接

    仅仅包含所链接文件的路径名,因此能链接目录,也可以跨越文件系统进行链接。但是,当原始文档被删除后,链接文件也将失效,从这一点上来说与Windows系统中的“快捷方式”具有一样的性质。

    还拿 /etc/passwd 文件举例子,这次创建一个软链接并查看其文件属性:

    [root@qll ~]# ln -s /etc/passwd passwd_soft
    [root@qll ~]# ll -i /etc/passwd passwd_soft
     67544416 -rw-r--r--. 1 root root 882 2月   5 11:50 /etc/passwd
    100663362 lrwxrwxrwx. 1 root root  11 2月  19 17:51 passwd_soft -> /etc/passwd
    
    • 第一列可以出来,两个文件名对应的inode不同,说明这是两个文件。

    • 第二列显示的文件权限也不一样,这一点和硬链接完全不同。注意文件类型被标记为“l”,说明这是一个软链接文件。

    • 第三列,观察两个文件的链接数量,都是1。说明创建软链接并不增加原文件的链接数。

    • 第六列是文件大小,注意新建的软链接文件大小为11Bytes,也就是字符串“/etc/passwd”的长度。

    • 最后一列显示软链接文件指向的源文件。

    ln 命令

    1. 硬链接

    [root@qll tmp]# ln /tmp/data.txt data2.txt #创建硬链接
    [root@qll tmp]# rm -rf /tmp/data.txt       #删除源文件
    [root@qll tmp]# cat data2.txt              #删除源文件后,链接文件仍可以正常使用
    

    2. 软链接

    [root@qll tmp]# ln -s /tmp/te.txt /tmp/te2.txt #创建文件软链接
    [root@qll tmp]# ln -s /bin testbin             #创建目录软链接
    [root@qll tmp]# rm -rf /tmp/te.txt             #删除源文件
    [root@qll tmp]# cat /tmp/te2.txt               #删除源后,软链接无法使用
    cat: te2.txt: 没有那个文件或目录
    
    
    关注「开源Linux」加星标,提升IT技能
    
    
    十年磨一剑
  • 相关阅读:
    OpenCV中 常用 函数 的作用
    OpenCV中Mat的使用
    awk --- 常用技巧
    Specify 的含义 ------ 转载
    关于CPU CACHE工作机制的学习
    关于CPU Cache -- 程序猿需要知道的那些事
    ARM920T的Cache
    Learn Git and GitHub
    朴素贝叶斯分类器(MNIST数据集)
    k-近邻算法(KNN)识别手写数字
  • 原文地址:https://www.cnblogs.com/qinlulu/p/14671408.html
Copyright © 2020-2023  润新知