Linux命令二:链接

文章目录

  • 一、链接定义
  • 二、两种链接是否占用磁盘空间

一、链接定义

Linux 系统中有软链接和硬链接两种特殊的“文件”。
软链接可以看作是Windows中的快捷方式,可以让你快速链接到目标档案或目录。
硬链接则透过文件系统的inode来产生新档名,而不是产生新档案。

创建方法都很简单:
软链接(符号链接) ln -s source target
硬链接 (实体链接)ln source target

软链接与硬链接,区别不仅仅是在概念上,在实现上也是完全不同的。

区别
1.硬链接原文件/链接文件公用一个inode号,说明他们是同一个文件,而软链接原文件/链接文件拥有不同的inode号,表明他们是两个不同的文件;
2.在文件属性上软链接明确写出了是链接文件,而硬链接没有写出来,因为在本质上硬链接文件和原文件是完全平等关系;
3.链接数目是不一样的,软链接的链接数目不会增加;
4.文件大小是不一样的,硬链接文件显示的大小是跟原文件是一样的。而这里软链接显示的大小与原文件就不同了,BBB大小是95B,而BBBsoft是3B。因为BBB共有3个字符
5.软链接没有任何文件系统的限制,任何用户可以创建指向目录的符号链接

总之,建立软链接就是建立了一个新文件。当访问链接文件时,系统就会发现他是个链接文件,它读取链接文件找到真正要访问的文件。

当然软链接也有硬链接没有的缺点:因为链接文件包含有原文件的路径信息,所以当原文件从一个目录下移到其他目录中,再访问链接文件,系统就找不到了,而硬链接就没有这个缺陷,你想怎么移就怎么移;还有它要系统分配额外的空间用于建立新的索引节点和保存原文件的路径。

二、两种链接是否占用磁盘空间

硬链接的特点
Linux命令二:链接_第1张图片

l 创建硬链接会增加额外的记录项以引用文件
l 对应用于同一文件系统上的一个物理文件
l 每个目录引用相同的inode 号
l 创建时链接数递增
l 删除文件时,递减链接数,当链接数为0时,该文件已被删除
l 硬链接的建立是不能越驱动器或分区的
l 语法为:ln filename linkname

软链接的特点
Linux命令二:链接_第2张图片
l 与硬链接最大的不同就是,软链接并不使用相同的inode号,同时 也不增加或减少目标文件inode的引用计数
l 创建的链接只是对应的指向源文件的路径,所以可以对目录进行链接,硬链接中只能对文件进行链接
l 既然软链接是指向的一个文件的路径,所以可以跨越分区进行。
l 语法为:ln –s filename linkname

硬链接测试
语法为:ln filename linkname

硬链接应为两个文件都是同一个inode号,其实是同一个数据块,所以硬链接的文件不会占用磁盘空间。

软链接测试
语法为:ln –s filename linkname

源文件必须先存在,链接文件不需要存在,创建软连接的时候会生成。
注意:如果你是采用的这种方式,没有用绝对路径
[root@vm01 AAA]# ls -s 1.txt /root/test/1.txt
那么,创建出来的连接文件就会是红色的,且不停的闪动
Linux命令二:链接_第3张图片
正确做法:源和目标都要采用绝对路径
[root@vm01 AAA]# ls -s /root/test/AAA/1.txt /root/test/1.txt
Linux命令二:链接_第4张图片
链接一个目录:
[root@vm01 test]# ln -s /root/test/BBB /root/test/BBB1
查看当前目录下的文件和目录占用的磁盘空间大小
[root@vm01 test]# du -hs *
Linux命令二:链接_第5张图片
总结:所以,如果想要给系统盘上的文件或者目录做软连接时,可以先mv该文件或者目录到数据盘上,然后在数据盘上做个软连接到原来的系统盘,名称一致即。

转载:
https://www.cnblogs.com/crazylqy/p/5821105.html :inode的解释比较详细
https://blog.51cto.com/jk6627/1949090 :是否占用磁盘空间

你可能感兴趣的:(Linux命令)