【推荐阅读】

浅谈linux 内核网络 sk_buff 之克隆与复制

深入linux内核架构--进程&线程

了解Docker 依赖的linux内核技术

链接文件是Linux文件系统的一个特性。如需要在系统上维护同一文件的两份或多份副本,除了保存多份单独的物理文件副本之外,还可以采用保存一份物理文件副本和多个虚拟副本的方法。这种虚拟的副本就称为链接。链接是目录中指向文件真实位置的占位符。在Linux中有两种不同类型的文件链接:

符号链接(软链接)

硬链接

符号链接

符号链接就是一个实实在在的文件,它指向存放在虚拟目录结构中某个地方的另一个文件。这两个通过符号链接在一起的文件,彼此的内容并不相同。使用 ln -s 命令创建符号链接时,源文件必须存在,链接文件必须不存在。

使用相对路径创建符号链接

[root@localhost ~]# mkdir test
[root@localhost ~]# cd test[root@localhost test]# touch test.txt
[root@localhost test]# ln -s test.txt test
[root@localhost test]# ll
total 4
lrwxrwxrwx 1 root root    8 Aug 24 16:34 test -> test.txt
-rw------- 1 root root 1672 Aug 24 16:33 test.txt

上面的例子中,源文件test.txt是第一个参数,符号链接(目标文件)test是第二个参数,命令执行结果是创建一个由目标文件指向源文件的链接。

注意:符号链接的文件大小与源文件的大小是不同的,符号链接test是8个字节,而test.txt是1672个字节,因为是一个链接指向,实际内容是不相同的,是两个完全不同的文件。证明链接文件与源文件是否相同,可以通过查看文件的inode(索引节点编号)号,如

[root@localhost test]# ls -i test*
34306370 test  34306369 test.txt

使用绝对路径创建符号链接

当源文件使用相对路径,而符号链接使用绝对路径时,创建的符号链接文件是有问题的,但是执行结果($?)是0

[root@localhost test]# ln -s test.txt /root/a[root@localhost test]# ll /root/a
lrwxrwxrwx 1 root root 8 Aug 24 16:44 /root/a -> test.txt

当源文件使用绝对路径,而符号链接使用相对路径时,是没有问题的

[root@localhost test]# ln -s /root/test/test.txt b[root@localhost test]# ll
total 4
lrwxrwxrwx 1 root root   19 Aug 24 16:48 b -> /root/test/test.txt
lrwxrwxrwx 1 root root    8 Aug 24 16:34 test -> test.txt
-rw------- 1 root root 1672 Aug 24 16:33 test.txt[root@localhost test]# ll /root/test/b
lrwxrwxrwx 1 root root 19 Aug 24 16:48 /root/test/b -> /root/test/test.txt

所以,源文件使用相对路径时,链接文件必须使用相对路径;当源文件使用绝对路径的时候,链接文件可以是相对路径,也可以是绝对路径

删除软连接时,不影响源文件,删除源文件后,软连接失效

不要对软链接文件创建软链接,会形成易断裂的链接链

硬链接

硬链接会创建独立的虚拟文件,其中包含了原始文件的信息及位置。但是它们从根本上而言是同一个文件。引用硬链接文件等同于引用了源文件。要创建硬链接,原始文件也必须事先存在

[root@localhost test]# ll
total 4
-rw------- 1 root root 1672 Aug 24 16:33 test.txt[root@localhost test]# ln test.txt test[root@localhost test]# ll -i test*
34306369 -rw------- 2 root root 1672 Aug 24 16:33 test
34306369 -rw------- 2 root root 1672 Aug 24 16:33 test.txt

硬链接文件是共享inode编号的,因为硬链接文件是同一个文件,文件大小也一样。上面的例子中,显示这两个文件有两个链接,因为文件本身也是自己的硬链接。

注意:不能对目录创建硬链接,因为会形成网状的链接关系。另外,不能对不同文件系统的文件创建硬链接。也就是说,只有同一文件系统中,inode号相同的文件互为硬链接

[root@localhost test]# mkdir a [root@localhost test]# ln a h_a
ln: ‘a’: hard link not allowed for directory

删除硬链接文件对源文件无影响,删除源文件也不影响链接文件

[root@localhost test]# ll
total 4
-rw------- 1 root root 1672 Aug 24 16:33 test

链接文件的复制

如果使用cp命令复制一个文件,而该文件又已经被链接到了另一个源文件上,那么你得到的其实是源文件的一个副本。

[root@localhost test]# ll
total 4
-rw------- 1 root root 1672 Aug 24 16:33 test[root@localhost test]# ln -s test s_test[root@localhost test]# ll
total 4
lrwxrwxrwx 1 root root    4 Aug 24 17:19 s_test -> test
-rw------- 1 root root 1672 Aug 24 16:33 test[root@localhost test]# cp s_test s_test1[root@localhost test]# ll
total 8
lrwxrwxrwx 1 root root    4 Aug 24 17:19 s_test -> test
-rw------- 1 root root 1672 Aug 24 17:19 s_test1              ## 此文件为源文件的副本
-rw------- 1 root root 1672 Aug 24 16:33 test

所以,当需要使用新的链接文件,一般都是重新创建

[root@localhost test]# ln -s test s1_test[root@localhost test]# ll -i
total 8
34306372 lrwxrwxrwx 1 root root    4 Aug 24 17:28 s1_test -> test
34306370 lrwxrwxrwx 1 root root    4 Aug 24 17:19 s_test -> test
34306371 -rw------- 1 root root 1672 Aug 24 17:19 s_test1
34306369 -rw------- 1 root root 1672 Aug 24 16:33 test

软链接文件用于升级应用

当应用升级后,目录名发生变化,可以将软链接文件指向新的目录

[root@localhost opt]# tar xzf jdk-8u191-linux-x64.tar.gz [root@localhost opt]# ll
total 329372
drwxr-xr-x 7    10   143       245 Oct  6  2018 jdk1.8.0_191
-rw-r--r-- 1 root  root  191753373 Dec 16  2018 jdk-8u191-linux-x64.tar.gz[root@localhost opt]# ln -sv jdk1.8.0_191/ jdk
‘jdk’ -> ‘jdk1.8.0_191/’[root@localhost opt]# ll
total 329372
lrwxrwxrwx 1 root  root         13 Aug 24 17:32 jdk -> jdk1.8.0_191/
drwxr-xr-x 7    10   143       245 Oct  6  2018 jdk1.8.0_191
-rw-r--r-- 1 root  root  191753373 Dec 16  2018 jdk-8u191-linux-x64.tar.gz[root@localhost opt]# jdk/bin/java -version
java version "1.8.0_191"
Java(TM) SE Runtime Environment (build 1.8.0_191-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.191-b12, mixed mode)

应用升级

[root@localhost opt]# ll
total 329372
drwxr-xr-x 9 root  root        220 Aug 24 10:52 apache-tomcat-9.0.52
lrwxrwxrwx 1 root  root         13 Aug 24 17:32 jdk -> jdk1.8.0_191/
drwxr-xr-x 7    10   143       265 Aug 24 17:33 jdk1.8.0_191
drwxr-xr-x 8 10143 10143       273 Jun  9 09:58 jdk1.8.0_301
-rw-r--r-- 1 root  root  191753373 Dec 16  2018 jdk-8u191-linux-x64.tar.gz
-rw-r--r-- 1 root  root  145520298 Aug 25  2021 jdk-8u301-linux-x64.tar.gz[root@localhost opt]# rm -f jdk[root@localhost opt]# ln -sv jdk1.8.0_301/ jdk
‘jdk’ -> ‘jdk1.8.0_301/’[root@localhost opt]# jdk/bin/java -version
java version "1.8.0_301"
Java(TM) SE Runtime Environment (build 1.8.0_301-b09)
Java HotSpot(TM) 64-Bit Server VM (build 25.301-b09, mixed mode)

软链接文件扩容磁盘

当前有一个目录/home/weblogic没有空间了,新增加了一块盘,需要通过软链接的方式扩容

1、创建一个新目录,将新增磁盘挂载到此目录

# mkdir /home/app# mount /dev/sdb1 /home/app/

2、将weblogic目录移动到这个app目录

# mv /home/weblogic /home/app/

3、做软链接,实现扩容

# ln -s /home/app/weblogic /home

这样,在home下就有一个weblogic的链接文件指向/home/app/weblogic,相当于扩容了

Linux文件系统之链接文件相关推荐

  1. 以下属于linux文件系统认为的文件是,信息安全技术题库:在Linux系统中,图形文件、数据文件、文档文件等都属于()。...

    相关题目与解析 Linux中图像文件属于().A.文本文件B.连接文件C.特殊文件D.二进制文件 主要用于Linux系统中进程间相互传递数据.A.FIFO文件B.设备文件C.链接文件D.目录文件 关于 ...

  2. 运维日记010 - Linux下的链接文件

    运维日记010 - Linux下的链接文件 几个基本概念 Linux下的链接文件可以分为硬链接(hard link)与软链接(soft link).要理解它们,必须先要理解几个基本概念. inode ...

  3. 【Linux】Linux 文件系统与设备文件

    Ref: <Linux设备驱动开发详解:基于最新的Linux4.0内核>中的第5章<Linux 文件系统与设备文件> 基于Linux 5.10   本文结合源码和实例分析了Li ...

  4. linux每个文件标识,Linux文件系统中每个文件用____来标识。

    Linux文件系统中每个文件用____来标识. 更多相关问题 [问答题] 分析冶炼终点硫高的原因及处理措施? [单选] 转炉炼钢的主要金属料是指() [问答题] 复合脱氧剂的优点? [问答题] 什么是 ...

  5. 【LINUX学习】链接文件

    linux下的连接文件和windows下的快捷方式有点像.不过linux 下有硬链接和软链接两种. 硬链接: 是在某个目录下新增一个源链接文件的关联数据.比如 为/etc/passwd 创建一个硬链接 ...

  6. 【Linux】软硬链接 文件存储,删除,文件目录管理 (cp、mv、rm、cut、sort、uniq、wc、head、tail、split 、which、whereis、type、find)

    目录 一.文件存储 二.硬链接与软链接 硬链接 如何创建硬链接: 硬链接知识小结 软连接 如何创建软连接? 软连接知识小结: 三.文件删除的原理 四.文件目录管理命令 cp命令 mv 命令 rm 命令 ...

  7. linux设备文件,Linux 文件系统与设备文件

    1 Linux 文件系统 1.1 Linux 文件系统与设备驱动关系 下图表明了 Linux 中虚拟文件系统.磁盘/Flash文件系统以及一般的设备文件与设备驱动程序之间的关系. 文件系统与设备驱动之 ...

  8. Linux中的链接文件

    链接文件分为两种:一种是符号链接(Symbolic Link,国内通常叫软链接),另外一种是硬链接(hard Link).默认情况下,ln命令产生硬链接.ln -s(小写)命令产生符号链接 硬链接与软 ...

  9. linux查找硬链接文件夹,linux学习(四)复制(cp)移动(mv)删除(rm)查找(find)文件、文件夹操作、软硬链接的区别...

    @ 复制文件 cp命令用于复制文件到制定的目录 语法格式为: cp [选项] 源文件或目录 目标文件或目录 命令选项 含义 cp -d 当复制符号链接时,把目标文件或目录页建立为符号链接,并指向与源文 ...

最新文章

  1. 机器学习数据预处理之缺失值:插值法填充+多项式插值
  2. c++版a+b问题的各种无聊做法
  3. 蓝牙 GATT 协议
  4. 详解华为交换机iStack特性
  5. android 运行jar包,android将so打到jar包中并运行-Go语言中文社区
  6. ELK学习笔记之Elasticsearch启动常见错误
  7. Qt6程序打包(如何解决Qt程序在其他电脑上无法运行的问题)
  8. 【服务器】宝塔部署eoLinker开源版
  9. cad插入块_软件CAD | 块amp;点工具
  10. redis 默认过期策略_redis 过期策略
  11. WebS WebStorm WebStorm WebS官方版下载
  12. 多媒体的基础知识:感觉媒体、表现媒体、表示媒体、传输媒体、存储媒体
  13. 四、Raid卡(阵列卡)
  14. 东南大学计算机程光,东南大学计算机科学与工程学院硕导介绍:程光
  15. Epub电子书格式(四)
  16. 抖音网页直播弹幕 protobuf 推导
  17. 六 R语言barplot条形图之带误差棒的对称条形图及相关性分析结果分布
  18. excel设置斑马线
  19. BaseQuickAdapter设置条目点击事件无效
  20. C#文件操作相关语句 - 大全

热门文章

  1. 云南贵州地区市场知名的调查研究咨询公司
  2. rman系列之在window平台和linux平台上rman的自动备份
  3. 图解 JavaScript 对象
  4. Debezium系列之:安装部署debezium2.0以上版本的详细步骤
  5. rtge更好发挥士大夫广告的通过合同
  6. 交错数组 c语言,C#中的数组,多维数组和交错数组
  7. 使用Exchange获取邮件内容
  8. 无聊到能吓死一湾人的鬼畜代码
  9. VC890D老款数字万用表内部旋钮触点
  10. 定期把电脑的文件备份到服务器,怎么让电脑定期自动备份文件或文件夹(学会这一招,让电脑自动备份你的重要资料)...