Linux文件系统 您所在的位置:网站首页 linux如何打开一个文件目录 Linux文件系统

Linux文件系统

2023-12-14 08:07| 来源: 网络整理| 查看: 265

链接文件是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,相当于扩容了

 



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有