Linux文件属性及相关命令
1. 文件属性体系
1.1 概述

1.2 inode与block部分
1)概述
- inode(索引节点):
- inode 号码:类似身份证号,通过它能定位到文件内容
- inode 是一个存储空间,inode 号是这个空间的标识;inode 空间存储的信息包括:
- 文件属性信息(文件大小、修改时间、权限、所有者等)
- block(数据块)的位置(相当于指向文件实际数据的指针)
- 不存储文件名
- block(数据块):专门用来存放文件的实际数据
2)inode和block的关系
- 用户访问查看 oldboy.txt 文件内容的流程:
- 用户访问 oldboy.txt 的时候,系统会根据文件 inode 号码找出它对应的 inode 空间。
- 访问来到 inode 空间后,确认用户,确认权限。
- 权限信息正确就准许通过,可以访问 inode 对应的 block 区域(数据)。

3) inode和block特点
- inode 索引节点,存放文件属性信息,block 位置。
- 每创建 1 个非空文件至少占用 1 个 inode,1 个 block,一般文件都要有 1 个 inode。
- 1 个 block 默认是 4k。
- inode,block 数量是在格式化的时候创建的。
- 正常情况下 block 的使用会更快。
- 创建小文件不足 4k,1 个 block 还有剩余空间,无法给其他文件使用。
- 创建文件大于 4k,占用多个 block。
4)如何查看
- 查看 block 的使用情况命令:(平时说的磁盘空间) df -h 磁盘空间使用情况
- 查看 inode 的使用情况命令:
df -i
注:文件名是存放在目录的 block 中的,没有存放在 inode 中,所以文件名不是文件属性。
1.3 文件类型部分
1)windows与linux文件类型区别
-
这里熟悉 Linux 和 windows 扩展名即可。
-
windows 下面通过扩展名的区分不同文件类型,如果扩展名修改则无法使用。
示例:微信.exe 游戏.exe lidao.avi 4k-blue-ray.torrent
-
Linux 下面扩展名仅仅用于展示,随意修改。(但是推荐大家创建文件的时候给他加上。)
| 常用的扩展名 | 说明 |
|---|---|
| .txt | 普通文件 |
| .sh .bash | shell 脚本 |
| .conf .cfg .xml .yaml .yml | 配置文件 |
| .py | python 脚本文件 |
2)Linux文件类型
| Linux 常见文件类型 | 含义 |
|---|---|
| - | 文件 file,范围较广。 |
| d | 目录 directory |
| l | 软连接,类似于 windows 快捷方式。 |
| c | 字符设备 char 特殊文件,不断输出,吸入 |
| b | 块设备 block 硬盘 |
| s | 套接字 socket 文件 |
| p | 管道文件 |

3)如何查看文件类型
- file 命令查看详细文件类型
| 文件的分类 | 说明 |
|---|---|
| text | 普通文件(文本文件),我们日常可以查看或直接修改,平时书写就是这种,脚本。 |
| data | 数据文件,需要用专用命令查看。比如压缩包。 |
| 二进制文件 | 大部分都是命令。 |
[root@oldboy-king ~]# file /etc/hostname /var/log/wtmp /bin/ls
/etc/hostname: ASCII text
/var/log/wtmp: data
/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]=aaf05615b6c91d3cbb076af81aeff531c5d7dfd9, stripped
1.4 软硬链接
1) 概述
- 软链接:类似于 windows 中快捷方式,也是一种文件;用于存放源文件的路径 (位置 + 名字),应用最多。
- 硬链接:在同一个分区中,不同的文件的 inode 号码相同了,这些文件互为硬链接,很少使用。
2)如何创建
- ln (link) 创建软连接或硬链接,默认创建硬链接。
- 创建软连接
- ln -s 源文件 软连接文件
#准备新的环境 new目录
mkdir -p /oldboy/new
cd /oldboy/new/#创建源文件
[root@oldboy-lnb-king-v3 new]# touch oldboy.txt
[root@oldboy-lnb-king-v3 new]# ll
总用量 0
-rw-r--r--. 1 root root 0 12月 1 11:22 oldboy.txt#创建软连接
[root@oldboy-lnb-king-v3 new]# ln -s oldboy.txt oldboy.txt_soft[root@oldboy-lnb-king-v3 new]# ll
总用量 0
-rw-r--r--. 1 root root 0 12月 1 11:22 oldboy.txt
lrwxrwxrwx. 1 root root 10 12月 1 11:23 oldboy.txt_soft -> oldboy.txt #可以发现软连接指向源文件#从源文件位置写入内容
[root@oldboy-lnb-king-v3 new]# echo lidao >>oldboy.txt[root@oldboy-lnb-king-v3 new]# cat oldboy.txt
lidao#从软连接位置写入内容
[root@oldboy-lnb-king-v3 new]# echo lidao soft >>oldboy.txt_soft
[root@oldboy-lnb-king-v3 new]# cat oldboy.txt
lidao
lidao soft[root@oldboy-lnb-king-v3 new]# cat oldboy.txt_soft
lidao
lidao soft#创建绝对路径的软连接
[root@oldboy-lnb-king-v3 new]# ln -s /oldboy/new/oldboy.txt oldboy.txt_soft_jue
[root@oldboy-lnb-king-v3 new]# ll
总用量 4
-rw-r--r--. 1 root root 17 12月 1 11:24 oldboy.txt
lrwxrwxrwx. 1 root root 10 12月 1 11:23 oldboy.txt_soft -> oldboy.txt
lrwxrwxrwx. 1 root root 22 12月 1 11:24 oldboy.txt_soft_jue -> /oldboy/new/oldboy.txt
#成功如果源文件被删除或改名或移动走,软连接会如何?
会红色闪烁,失效
- 硬链接
[root@oldboy-lnb-king-v3 new]# ln oldboy.txt oldboy.txt_hard
[root@oldboy-lnb-king-v3 new]# ll
总用量 8
-rw-r--r--. 2 root root 17 12月 1 11:24 oldboy.txt
-rw-r--r--. 2 root root 17 12月 1 11:24 oldboy.txt_hard
lrwxrwxrwx. 1 root root 22 12月 1 11:42 oldboy.txt_soft_jue -> /oldboy/new/oldboy.txt##inode号相同
[root@oldboy-lnb-king-v3 new]# ll -i
总用量 8
67187641 -rw-r--r--. 2 root root 17 12月 1 11:24 oldboy.txt
67187641 -rw-r--r--. 2 root root 17 12月 1 11:24 oldboy.txt_hard
67187644 lrwxrwxrwx. 1 root root 22 12月 1 11:42 oldboy.txt_soft_jue -> /oldboy/new/oldboy.txt[root@oldboy-lnb-king-v3 new]# echo lidao >oldboy.txt[root@oldboy-lnb-king-v3 new]# echo lidao996 >>oldboy.txt_hard[root@oldboy-lnb-king-v3 new]# cat oldboy.txt
lidao
lidao996[root@oldboy-lnb-king-v3 new]# cat oldboy.txt_hard
lidao
lidao996
3)软连接硬链接区别

- 啥意思
- 软连接 (符号链接) softlink/symlink,类似于 windows 快捷方式,存放源文件的位置。
- 硬链接:同一个分区中 inode 号码相同的文件,互为硬链接。
- 咋来的
- 软连接通过
ln -s创建,硬链接通过ln创建。
- 软连接通过
- 特点
- 软连接是比较常用的,可以给文件、目录创建。
- 硬链接只能给文件创建,不能跨分区,无法给目录创建硬链接,较少使用。
- 咋没的
- 删除软连接,源文件不受影响。
- 删除源文件,软连接无法使用,红底白字闪烁。
- 删除硬链接,源文件、软连接无影响。
- 删除源文件和硬链接,这个文件就被删除了。
1.5 文件大小
- 查看文件大小
ll -h /etc/hosts
ll -h /etc/
- 查看目录大小
du -sh /etc/
-h 人类可读形式显示大小.
-s 不要显示目录中所有的子目录了,只显示汇总信息,不显示所有查看指定目录所占的空间.(block)
1.7 时间
| Linux 文件时间 | 说明 |
|---|---|
| mtime | modify 修改时间,最常用。 |
| atime | access 访问时间 |
| ctime | change 文件属性的变化时间 |
- stat 查看文件的属性信息 + 文件名
2. 打包压缩三剑客
备份单个文件就是cp即可,备份多个文件或目录推荐使用打包压缩
2.1 概述
| 压缩命令 | 应用场景 |
|---|---|
| tar | 大部分使用 tar 即可。创建,查看,解压,解压到指定目录。 |
| gzip | 一般配合其他命令使用。 |
| zip、unzip | 一般用于解压 zip 格式的压缩包(unzip) |
2.2 tar
- windows 压缩
- linux 打包压缩
- 打包 (文件放在一起) tar
- 压缩 (进行压缩,节约空间) tar 命令的选项
- tar 命令要熟练掌握的功能:
- 创建压缩包
- 查看压缩包
- 解压压缩包
- 解压压缩包到指定目录
| tar 命令 | 选项与说明 |
|---|---|
| 创建 zcf | tar zcf 压缩包 被压缩的文件/目录 .... |
| 查看 tf | tar tf /tmp/etc.tar.gz |
| 解压 xf | tar xf /tmp/etc.tar.gz |
1) 创建压缩包
#请把/etc/目录压缩,压缩包放在/tmp/etc.tar.gz
tar zcvf /tmp/etc.tar.gz /etc/
tar zcf /tmp/etc.tar.gz /etc/
v verbose 显示过程(未来不加)
c create 创建包(打包),如果只放cf选项就是打包,不压缩。
z gzip tar命令创建包后,通过gzip压缩工具进行压缩。
所以:tar打包 gz压缩 扩展名.tar.gz
f file 指定压缩包,f选项放在这几个选项的最后。
2)查看压缩包内容
tar ztvf /tmp/etc.tar.gz
tar tf /tmp/etc.tar.gz
t list 列表,查看压缩包内容.
3) 解压压缩包
tar zxvf /tmp/etc.tar.gz
tar xf /tmp/etc.tar.gz
x extract 解压
4)解压到指定目录
解压etc.tar.gz 到/mnt目录下
-C解压到指定目录
tar xf 压缩包 -C 解压后的存放目录
tar xf /tmp/etc.tar.gz -C /mnt/
5) tar: 从成员名中删除开头的“/”
- 结论:是个警告而已,可以忽略。
1 tar: Removing leading '/' from member names
- 由来:
- 这个是 tar 命令的安全保护机制。
- 提示出现的原因,我们打包的目标目录或文件是绝对路径。
- 把我们使用的绝对路径转换为相对路径。
- 为了防止压缩包中保留绝对路径,解压的时候可能发生覆盖,导致数据,配置丢失。
- 避免提示:使用相对路径打包。
cd /
tar zcf /tmp/etc.tar.gz etc/
这里使用相对路径打包, 提示警告消失了。
2.3 gzip
- 创建 gz 压缩包
touch lidao.txt
gzip lidao.txt
ll lidao.txt.gz
- 解压
gzip -d lidao.txt.gz
2.4 zip/unzip
压缩
zip -r etc.zip /etc/
-r用于压缩目录
解压
unzip etc.zip如果命令没有请yum安装 yum install -y unzip