linux软连接详解!!!

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 本文介绍了Linux文件类型、文件属性、文件存储机制以及软链接和硬链接的概念。主要内容包括:Linux文件类型及其识别方法、文件属性的组成及查看方式、inode和block的作用、软链接和硬链接的区别及应用场景。通过具体示例,帮助读者理解Linux文件系统的运作原理。

[TOC]

第1章 Linux文件类型

1.文件类型与拓展名介绍

我们都知道,windows系统是通过拓展名来区分不同文件类型的,如果拓展名错误,或者没有拓展名,则会导致文件无法正常打开。
但是Linux系统不同于Windows系统,Linux系统不会根据拓展名来区分文件类型,而是通过文件给设定属性的特殊方式来区分文件类型的。虽然Linux系统中也包含各种拓展名的文件,但这些文件的拓展名,并不代表文件的类型,这些拓展名只是为了让用户更容易区分文件类型,即使文件拓展名错误,文件也可以正常运行。
简单来说:Linux下的文件拓展名只是给人看的。

2.Linux下常见的文件类型说明

文件类型:

-   #普通文件(文本, 二进制, 压缩, 图片, 日志等) 
d   #目录文件
b   #设备文件(块设备)存储设备硬盘 /dev/sda1, /dev/sda2
c   #设备文件(字符设备),终端 /dev/tty1, /dev/zero
s   #套接字文件, 进程间通信(socket)
p   #管道文件
l   #链接文件

3.使用file命令查看文件的类型

我们知道Linux里的文件类型只是给人看的,并不一定代表实际的文件格式。
那么我们如何确定一个文件的真正格式呢,可以使用file命令。

举例:

[root@linux ~]# file /etc/passwd
/etc/passwd: ASCII text

[root@linux ~]# file /dev/sda
/dev/sda: block special

[root@linux ~]# file /bin
/bin: symbolic link to `usr/bin'

[root@linux ~]# file /opt
/opt: directory

[root@linux ~]# file /bin/ls
/bin/ls: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=ceaf496f3aec08afced234f4f36330d3d13a657b, stripped

[root@linux ~]# file nginx-1.18.0-1.el7.ngx.x86_64.rpm 
nginx-1.18.0-1.el7.ngx.x86_64.rpm: RPM v3.0 bin i386/x86_64 nginx-1:1.18.0-1.el7.ngx

[root@linux ~]# file php71.tar.gz 
php71.tar.gz: gzip compressed data, from Unix, last modified: Tue Jul 14 08:37:18 2020

4.Windows和Linux下常见的拓展名说明

windows常见拓展名:

.jpg     #图片格式
.png     #图片格式
.txt     #文本格式
.tar     #压缩格式
.zip     #压缩格式
.exe     #执行程序

Linux拓展名:

.rpm            #软件包
.conf            #配置文件
.sh                #脚本
.tar.gz            #压缩包

第2章 文件属性概述

1.文件属性解释

在Linux系统中,文件或目录的属性主要包括:索引节点,文件类型,权限属性,链接数,所归属的用户和用户组,最近修改时间等。

执行ls -lhi命令可以详细的显示/data目录下内容的常见属性信息。

[root@oldboy ~]# ls -lih /data                  
总用量 12K
753299 -rw-r--r-- 1 root root  4 1月  25 16:43 oldboy.txt
753300 -rw-r--r-- 1 root root  7 1月  25 16:43 oldgirl.txt
753301 -rw-r--r-- 1 root root 10 1月  25 16:43 oldzhang.txt

具体的每一列的含义如下:

753299          第1列:Inode索引节点编号
-rw-r--r--      第2列和第3列:文件类型及权限
1               第4列:硬链接个数
root            第5列:文件所属用户
root            第6列:文件所属组
10              第7列:文件大小
1月  25 16:43   第8列:文件的修改时间
oldzhang.txt    第9列:文件或目录名(不属于属性)

第3章 Linux文件存储inode和block

1.什么是inode

Linux中一个文件实际上是分为元数据和文件内容。
其中存放文件属性信息的存储空间被称为Inode,存放实际数据的存储空间被称为Block。

Inode存储的属性信息,包括但不限于:文件大小,所属用户和所属组,文件权限,文件类型,修改时间等,指向Block位置的实体指针。

2.什么是block

Block是用来存放实际数据的空间,一般为4K大小,单个大文件需要多个Block块来存储,特别小的单个文件如果不能占满Block块,那么剩余的空间也无法利用。

3.目录和文件的关系

目录是个特殊的文件,目录里保存了当前目录下的文件名称和文件对应的inode号。
简单来说,文件名只是方便人类记忆,通过查找文件名,找到这个文件的inode号,然后再去访问对应inode。最后通过Inode找到block的指针位置,最后取到文件的内容。

示意图如下:

image-20210323195843176

4.Linux删除文件

Linux的文件名是存在父目录的block里面并指向这个文件的inode节点.这个文件的inode节点再标记指向存放这个文件的block的数据块。
我们删除一个文件,实际上并不是删除inode节点和block的数据。
只是在这个文件的父目录里面的block删除这个文件的名字,从而使这个文件名消失,并且无法指向这个文件的inode节点
当没有文件名指向这个inode节点同时没有进程调用的时候,这个inode和下面的block是无主的。
在磁盘检查或者有内容写入的时候会是否释放inode节点和存放这个文件的数据块,并更新inodeMAP和blockMAP今后让这些位置存放其他文件数据。

第4章 软链接和硬链接

1.什么是软链接

软链接类似于Windows的快捷方式,软链接里存放的是原文件的路径。
当我们访问软链接时实际上是先找到原文件的文件名,然后读到原文件的Inode,然后再去找原文件的Block,最后访问到数据。
当删除软链接时并不影响原文件的访问,但是删除原文件之后,软链接就不能正常访问了。因为真正的文件没有了。

image-20210127121345496

软链接特点:

1.软链接的inode和源文件不同 存放源文件的路径 指向源文件的实体
2.创建软链建 ln -s 
3.创建的软链接就是普通文件 删除rm命令
4.删除链接文件不影响源文件
5.删除源文件 链接文件存在,但是无法访问源文件的内容 红底白字进行闪烁

2.什么是硬链接

在同一个文件系统中有相同的inode号的文件互为硬链接
硬链接 文件的多个入口 类似于超市有多个入口 堵死一个门不影响文件的正常使用
相当于复制多个inode号码

image-20210127121355851

硬链接特点:

1.对已存在的文件做硬链接
2.inode相同 属性相同
3.只能在同一个分区内进行创建 同一个文件系统
4.不能对目录创建硬链接,只能对文件创建硬链接  扩展了解
5.删除一个硬链接不影响其他的相同inode号的文件
6.目录的硬链接默认是2个
7.可以在任意一个入口进入到文件修改内容 查看文件的时候都会发生变化
8.删除所有的相同的inode号 文件被真正的删除

3.文件链接练习

#创建目录
mkdir /data

#在目录下创建文件
touch /data/abc.txt

#创建目录的软链接
ln -s /data/ /data_link

#查看软链接的状态
ls -l /

#进入到软链接目录里,查看文件
cd /data_link
ls

#删除软链接并不会影响原来的目录
rm -rf /data_link/

4.工作中的应用场景

1.代码目录一般使用软链接来表示不同的版本
2.自己安装的软件通过软链接来表示不同的版本
目录
相关文章
|
Linux
Linux:ln创建删除软连接
Linux:ln创建删除软连接
1434 0
|
3月前
|
存储 Linux 索引
在Linux中,软连接和硬链接的区别?
在Linux中,软连接和硬链接的区别?
|
3月前
|
Linux
在Linux中,Rsync 同步时,如果要同步的源中有软连接,如何把软连接的目标文件或者目录同步?
在Linux中,Rsync 同步时,如果要同步的源中有软连接,如何把软连接的目标文件或者目录同步?
|
6月前
|
Linux Windows
linux(十七)文件和目录相关命令-软连接、硬链接 ln命令
linux(十七)文件和目录相关命令-软连接、硬链接 ln命令
88 0
|
XML Linux 数据格式
linux ln创建目录软连接
ln 软连接目录
186 0
|
Linux Windows
Linux文件系统ln-软连接、硬链接
ln命令是linux系统中一个非常重要命令,英文全称是“link”,即链接的意思,它的功能是为某一个文件在另外一个位置建立一个同步的链接。 一种是hard link,又称为硬链接;另一种是symbolic link,又称为符号链接。
235 0
Linux文件系统ln-软连接、硬链接
|
Linux
Linux:ln创建删除软连接
Linux:ln创建删除软连接
109 0
|
Linux 索引 Windows
Linux硬连接与软连接
Linux硬连接和软连接的简单介绍
132 0
Linux硬连接与软连接
|
存储 Oracle 关系型数据库
Linux上创建和更改硬链接和符号链接(软连接)
Linux上创建和更改硬链接和符号链接(软连接) 对于Linux上的硬链接和软连接而言,使用cp命令,无论覆盖其中的那个文件(源文件,软连接文件,硬链接文件),其它文件的内容都会同步修改。
4159 0