1. 文件属性概念
[root@oldboyedu ~]# ls -li /etc/
total 1092
第一个部分:文件属性 第二个部分:文件名称
34141705 d rwxr-xr-x. 3 root root 101 Mar 28 10:42 abrt
34022854 - rw-r--r--. 1 root root 16 Mar 28 10:45 adjtime
33590855 - rw-r--r--. 1 root root 1518 Jun 7 2013 aliases
33554501 - rw-r--r--. 1 root root 12288 Mar 28 10:48 aliases.db
33583487 d rwxr-xr-x. 2 root root 236 Mar 28 10:42 alternatives
34105318 - rw-------. 1 root root 541 Apr 11 2018 anacrontab
33862777 - rw-r--r--. 1 root root 55 Apr 11 2018 asound.conf
34193678 d rwxr-x---. 3 root root 43 Mar 28 10:42 audisp
101181822 d rwxr-x---. 3 root root 83 Mar 28 10:48 audit
1 2 3 4 5 6 7 8
1. 文件数据的inode信息: index node == 索引节点
作用: 快递从磁盘中找到数据信息
2. 文件的数据类型: 文件 目录 链接文件 设备文件
PS: linux系统中一切皆文件
作用: 指明数据的文件类型
3. 权限位信息: r ead 读 w rite 写 execute 执行
作用: 控制让不同的用户对文件可以有不同的权限
4. 文件目录的硬链接数: 就类似于超市的多个门
作用: 可以多个路径查看数据信息
5. 文件所属用户信息(属主): 数据(孩子小于16岁) (属主)监护人
作用: 文件的创建或者拥有者
6. 文件所属组信息(属组): 数据(孩子小于16岁) (属主)监护人父亲 (属组)亲人 (隔壁老王)其他用户
作用: 文件或数据的所属用户组
7. 文件的大小信息
8. 文件的时间信息
2. 文件属性详细说明--文件类型
2.1 文件类型概念
windows: 区分文件的类型 扩展名
linux: 不用扩展名来区分文件类型
2.2 区分文件类型方法
a. 颜色区分
b. 利用属性信息区分
ls -l
d rwxr-xr-x. 3 root root 100 Apr 1 11:00 oldboy01
d rwxr-xr-x. 2 root root 6 Apr 12 11:19 oldboy.jpg
- rw-r--r--. 1 root root 35 Apr 12 08:52 oldboy.txt
- rw-r--r--. 1 root root 18 Apr 11 10:23 oldgirl.txt
- rw-r--r--. 1 root root 4 Apr 11 12:29 test01.txt
- rw-r--r--. 1 root root 65 Apr 11 12:21 test.txt
c. 利用特殊命令区分
[root@oldboyedu ~]# file /oldboy/oldboy.jpg
/oldboy/oldboy.jpg: directory
[root@oldboyedu ~]# file /oldboy/oldboy.txt
/oldboy/oldboy.txt: ASCII text
3. 常见文件类型
# d -- 目录文件类型 ***
# - -- 普通文件 ***
1. 纯文本文件 text /etc/hosts --- 文本文件(可以直接编辑查看的普通文件)
2. 二进制文件 binary /bin/ls --- 命令文件(不可以编辑)
3. 数据型文件 data /tmp/etc.tar.gz --- 数据文件(压缩的文件)
# l -- 链接文件(快捷方式) ***
创建方法: ln -s /oldboy/oldboy.txt /oldboy/oldboy_link.txt
源文件 快捷方式(软链接文件)
# c/b -- 块文件/字符文件(设备文件)
块文件: 存储的设备文件 光驱设备文件 磁盘
字符文件: 根本停不下来的输出字符信息
# s -- socket文件(网络编程)
```
磁盘设备文件 /dev/sda 磁盘文件
随机设备文件 /dev/urandom
输出设备文件 /dev/zero 黑洞出口文件??? 磁盘分区
输入设备文件 /dev/null 黑洞入口文件??? 定时任务
```
2.4 扩展命令说明:
# a. 显示文件信息类型命令: file
# b. 显示命令绝对路径信息: which
[root@oldboyedu ~]# which cat
/usr/bin/cat
# c. 显示命令路径以及文件: whereis
作用: 显示命令路径以及命令相关的帮助手册文件路径
# d. 快速定位文件路径信息 locate updatadb
locate 文件名称 --- 可以显示文件所在的路径信息
updatedb --- 建立文件和目录结构对应关系,便于检索
PS: 默认centos7没有以上命令,需要安装软件
yum provides locate ---获取命令属于哪个软件
yum install -y mlocate
# e. 快速查找数据信息命令
find命令语法
find 找寻的路径范围 -type 类型信息 -name "文件名称"
[root@oldboyedu etc]# find /etc -type f -name "ifcfg-eth0"
/etc/sysconfig/network-scripts/ifcfg-eth0
# 问题: 一个文件名称没有记全,如何查看文件路径
[root@oldboyedu etc]# find /etc -type f -name "*eth0"
/etc/sysconfig/network-scripts/ifcfg-eth0
[root@oldboyedu etc]# find /etc -type f -name "if*h0"
/etc/sysconfig/network-scripts/ifcfg-eth0
3. 课程知识回顾总结
1) 阶段三进行了回顾
2) 阶段四和五进行了回顾
3) 了解文件属性相关信息 inode 文件类型 权限 硬链接数 属主 属组 数据大小 数据修改时间
4) 详细了解了文件类型
常见的类型有哪些
扩展的文件相关命令
find 找寻文件所在路径
课程知识回顾
1)基础课程的前半部分进行了梳理
2)vim的使用原理和常见错误
3)文件属性知识
a 文件的索引节点 inode
b 文件的数据类型 OK
c 文件的权限位(9位->12位)
d 文件的硬链接数
e 文件属主
f 文件属组
g 文件的大小信息
h 文件的修改时间
4) 文件的数据类型
- 普通文件 (纯文本 二进制文件 数据文件)
d 目录文件
l 链接文件(软链接)
b/c 设备文件 b块设备文件 c字符信息设备文件
s socket文件
5)和文件相关的命令
locate(updatedb)
which whereis
find 路径信息 -type 文件类型 -name "文件名*"
4. find命令查找信息补充
# 快速查找数据信息命令
find命令语法
find 找寻的路径范围 -type 类型信息 -name "文件名称"
[root@oldboyedu etc]# find /etc -type f -name "ifcfg-eth0"
/etc/sysconfig/network-scripts/ifcfg-eth0
# 问题: 一个文件名称没有记全,如何查看文件路径
[root@oldboyedu etc]# find /etc -type f -name "*eth0"
/etc/sysconfig/network-scripts/ifcfg-eth0
[root@oldboyedu etc]# find /etc -type f -name "if*h0"
/etc/sysconfig/network-scripts/ifcfg-eth0
4.1 查看找文件数据信息:
# 精确查找:
find 路径信息 -type 文件类型 -name "文件名"
# 模糊查找:
find 路径信息 -type 文件类型 -name "文件名*"
find 路径信息 -type 文件类型 -name "*文件名"
find 路径信息 -type 文件类型 -name "文*件名"
# 忽略大小写查找:
find 路径信息 -type 文件类型 -iname "文件名*"
4.2根据数据大小查找数据:
find /oldboy -type f -size +100 --- 找出大于100K的文件
find /oldboy -type f -size -100
find /oldboy -type f -size +1M --- 找出大于1M的文件
# size
`b' for 512-byte blocks (this is the default if no suffix is used)
`c' for bytes (推荐)
`w' for two-byte words
`k' for Kilobytes (units of 1024 bytes) (推荐)
`M' for Megabytes (units of 1048576 bytes) (推荐)
`G' for Gigabytes (units of 1073741824 bytes)
4.3 根据目录指定层级进行查找数据(进行递归查找)
[root@oldboyedu oldboy01]# find /oldboy -type f -name "Oldboy*"
/oldboy/oldboy01/Oldboy.txt
/oldboy/Oldboy.txt
[root@oldboyedu oldboy01]# find /oldboy -maxdepth 1 -type f -name "Oldboy*"
/oldboy/Oldboy.txt
[root@oldboyedu oldboy01]# find /oldboy -maxdepth 2 -type f -name "Oldboy*"
/oldboy/oldboy01/Oldboy.txt
/oldboy/Oldboy.txt
[root@oldboyedu oldboy01]# find /oldboy -type f -name "Oldboy*" -maxdepth 1
find: warning: you have specified the -maxdepth option after a non-option argument -type, but options are not positional (-maxdepth affects tests specified before it as well as those specified after it). Please specify options before other arguments.
/oldboy/Oldboy.txt
# 根据数据的权限进行查找数据???
# 根据数据的时间信息查找??? 将30天以前的所有数据进行删除?
4.4 根据文件权限查找数据
# 根据文件权限查找数据 -perm
[root@oldboyedu oldboy]# find /oldboy -maxdepth 1 -type f -perm 644
/oldboy/services
/oldboy/oldboy.txt
/oldboy/oldboy.jpg
/oldboy/oldboy.png
/oldboy/oldboy.avi
/oldboy/1.tar
4.5 根据文件时间查找
find /oldboy -type f -mtime +7 --- 7天以前
find /oldboy -type f -mtime -7 --- 最近7天
find /oldboy -type f -mtime 7 --- 正好前面第7天
5. 显示目录结构
tree /oldboy --- 显示指定目录中的所有数据和所有结构信息
tree -L 2 / --- 查看目录结构层级信息
tree -d /oldboy --- 显示目录中所有结构信息
6. 对文件进行压缩处理
6.1 压缩命令语法:
# 压缩命令语法:
tar zcvf /oldboy/oldboy.tar.gz 指定要压缩的数据文件
z 压缩的方式 为zip
c 创建压缩包文件
v 显示压缩的过程
f 指定压缩包文件路径信息
# 压缩数据方法:
[root@oldboyedu oldboy]# tar zcvf /oldboy/oldboy.tar.gz /oldboy/services
tar: Removing leading `/' from member names
/oldboy/services
检查是否压缩成功:
# 如何解压数据包
tar xvf /oldboy/oldboy.tar.gz
-C 解压到指定路径
# 确认解压后的文件和源文件是否一致
1. 看文件的大小和时间信息
2. 利用vimdiff或者diff比较两个文件内容是否有区别
# 在不解压情况下查看压缩包里面的数据
tar tf /oldboy/oldboy.tar.gz
# 压缩过程信息说明
[root@oldboyedu oldboy]# tar zcvf oldboy.tar.gz /oldboy/services
tar: Removing leading `/' from member names --- 默认将压缩时绝对路径的根信息移除
/oldboy/services --- 需要压缩的文件数据信息
# 相对路径进行压缩
[root@oldboyedu oldboy]# tar zcvf oldboy.tar.gz ./services
./services
[root@oldboyedu oldboy]# tar tf oldboy.tar.gz
./services
6.2 在压缩过程中排除指定数据不要被压缩
# 在压缩过程中排除指定数据不要被压缩
tar命令排除参数
--exclude=PATTERN exclude files, given as a PATTERN -- 排除指定单个文件数据
-X, --exclude-from=FILE exclude patterns listed in FILE -- 批量排除多个文件
# 多个文件进行排除
# 第一个历程: 编写好排除文件
[root@oldboyedu oldboy]# vim /tmp/exclude.txt
/oldboy/oldboy.txt
/oldboy/oldboy.avi
/oldboy/oldboy.jpg
/oldboy/oldboy.png
# 第二个历程: 执行命令进行批量排除
[root@oldboyedu oldboy]# tar zcvf /tmp/oldboy05.tar.gz /oldboy --exclude-from=/tmp/exclude.txt
tar: Removing leading `/' from member names
/oldboy/
/oldboy/services
/oldboy/oldboy01/
# 总结:排除指定数据信息需要定义好路径信息
# 路径信息全部采用绝对路径
[root@oldboyedu /]# tar zcvf /tmp/oldboy03.tar.gz /oldboy --exclude=/oldboy/oldboy.txt
tar: Removing leading `/' from member names
/oldboy/
/oldboy/services
/oldboy/oldboy01/
# 路径信息全部采用相对路径
[root@oldboyedu /]# tar zcvf /tmp/oldboy04.txt.tar.gz ./oldboy --exclude=./oldboy/oldboy.txt
./oldboy/
./oldboy/services
./oldboy/oldboy01/
7. 文件权限
# 文件数据权限有什么:
r read --- 读权限 4
w write --- 写权限 2
x execute --- 执行权限 1
- --- 没有权限 0
# 权限赋予到指定人
属主信息 文件所有者(监护人) 权限
属组信息 文件所有者(亲人) 权限
其他用户 隔壁老王 权限
# 这个文件权限是644权限:
属主 属组 其他用户
r(4)w(2)-(0)=6 r(4)--=4 r(4)--=4
# 练习:
rwx -- 7
rw--w---x 621
rwx-wx--- 730
432 r---wx-w-
8. 用户信息(属主 属组)
# 1. 系统中用户信息有什么用
a 利用用户登录系统
b 利用用户管理数据
c 利用用户管理进程
# 2. 系统如何识别不同的用户
# 利用用户的数值编号进行识别: uid
[root@oldboyedu ~]# id root
uid=0(root) gid=0(root) groups=0(root)
[root@oldboyedu ~]# id oldboy
uid=1000(oldboy) gid=1000(oldboy) groups=1000(oldboy)
# 3. 用户组的概念:
oldboy oldgirl olddog(一个组) -sa(system admin) /sa --rwx
boy gril dog(一个组) -dev(Development) /dev --rwx
alex old (一个组) -dba(database admin) /dba --rwx
# 用户和用户组的关系:
用户 -- 用户组 1v1
多个用户 -- 用户组 多v1
用户 -- 多个用户组 1v多
# 系统识别用户组也是根据编号识别: gid
[root@oldboyedu ~]# id root
uid=0(root) gid=0(root) groups=0(root)
01 02 03
01. 显示用户名和uid对应关系
02. 显示属于的用户组,以及组名和gid对应关系
03. 用户可能属于哪些组
# 4. 用户进行分类
# a 超级管理员用户 皇帝 root
uid信息进行区分: 0
从权限上区分: 至高无上
# b 虚拟用户 傀儡 xxx nobody
uid信息进行区分: 1-999 centos7
从权限上区分: 管理进程 不能登录系统/没有家目录
# c 普通用户 平民 oldboy oldgirl
uid信息进行区分: 1000+ centos7
从权限上区分: 管理指定数据 可以管理指定进程 可以登录系统/有家目录
# 如何保护好皇帝:
01. 修改远程连接端口-52113 --- 修改/etc/ssh/sshd_config
02. 禁止root用户远程登录 --- 修改/etc/ssh/sshd_config
# 满足什么条件可以以root身份登录系统:
01. 服务器地址信息 14.215.177.38
02. 服务器端口信息 22 改端口
03. 登录用户信息 root
04. 登录用户的密码 rsdasd 暴力破解
9. inode
# inode: 索引节点
文件或数据在磁盘中保存位置
# 概述:
相当于书目录
用于存储文件属性信息
# 诞生出来:
创建文件系统之后
# block: 索引节点指向的位置
文件或数据的具体内容
# 读取数据的原理
1. 找到指定数据
2. 读取数据内容,先获取文件数据inode信息
3. 根据inode信息在磁盘上找到对应block
4. 根据block信息获取文件真正内容
# 磁盘操作处理过程: 地皮
磁盘 地皮
raid 将多块地连接起来
分区 将地皮进行规划
格式化 地皮进行打扫整理
创建文件系统 建房风格 inode和block
挂载 安装门
# 特点说明:
inode用于存放的是文件属性
inode用于存放块的指针位置 ???
创建一个文件至少占用一个inode和一个block
在同一分区中,两个文件的inode号码相同,两个文件互为硬链接 ???
# 查看方法:
[root@oldboyedu oldboy]# df -i
Filesystem Inodes IUsed IFree IUse% Mounted on
/dev/sda3 25587200 61342 25525858 1% /
# 补充:
01. 文件属性信息存储在inode中
02. 文件的名称信息存储在上一级目录的block中
10. block
# block: 索引节点指向的位置
文件或数据的具体内容
# block -- 数据块
# 概述:
目录指向的内容
用于存储文件具体内容
# 诞生出来:
创建文件系统之后
# 特点说明:
block用于存放的是数据信息
block默认大小为4k,可以进行调整
比较大的文件,会占用多个block
比较小的文件,剩余空间无法使用, 浪费磁盘空间
创建一个文件至少占用一个inode和一个block(非空文件)
磁盘读取数据按block为单位读取的
读取一个block会消耗一次磁盘I/O(input/output 磁盘读写)
# 企业中面试: 你都做过哪些系统优化操作?
# 问题: block默认大小可以调整 是大点好 小点好
设置大点: 10k 视频公司 图片公司
文件大的时候: 20K 4k -- 2个block 2s 4s --- 节省IO消耗
设置小点: 2k 互联网公司
小文件的时候: 1k 2k -- 1个block --- 提高磁盘利用率
# 查看方法:
[root@oldboyedu oldboy]# df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sda3 51149416 1752080 49397336 4% /
11. 时间信息(改变时间)
stat 文件名 ---查看文件的三个时间
# 文件数据时间类型:
1. 访问时间 Access time == atime
2. 修改时间 Modify time == mtime
3. 改变时间 Change time == ctime --- 数据属性信息发生改变了
访问时间:访问文件信息
修改时间:编辑文件内容
改变时间:编辑文件内容,修改文件属性
课程内容知识总结:
1) find命令使用方法
2) tar命令使用方法
3) 文件属性权限信息
4) 文件属性中用户信息 用户分类 useradd userdel usermod
5) 文件属性inodex ???
6) 文件属性时间信息(三种时间 stat)
课程知识回顾
1) find命令使用方法
a 根据文件名称类型进行查找
b 根据文件大小进行查找 -size +1M/-1M/1M
c 根据目录层级查找文件 -maxdepth 1 -mindepth
d 根据文件权限查找数据 -perm
[root@oldboyedu oldboy]# find /oldboy -maxdepth 1 -type f -perm 644
/oldboy/services
/oldboy/oldboy.txt
/oldboy/oldboy.jpg
/oldboy/oldboy.png
/oldboy/oldboy.avi
/oldboy/1.tar
2) tar命令压缩数据
如何压缩数据:
tar zcvf /tmp/oldboy.tar.gz /etc/ /oldboy/ /oldboy/oldboy.txt
如何解压数据:
tar xf /tmp/oldboy.tar.gz -C /oldboy
如何查看压缩包:
tar tf /tmp/oldboy.tar.gz
--exclude
--exclude-from
3) 文件属性信息 -- 权限信息
4) 文件属性信息 -- 用户信息 (超级用户 虚拟用户 普通用户)
5) 文件属性信息 -- 时间信息 (atime mtime ctime)
12. 硬链接数 ln
12.1 硬链接:
# 概念说明: 在一个分区中,inode号码相同的文件,互为硬链接
# 特点
1.防止误删除数据,不能防止误修改
2.不能给目录创建硬链接
# 诞生过程:
ln 链接的源文件 硬链接的文件信息
[root@oldboyedu oldboy]# ln /oldboy/oldboy.txt /oldboy/oldboy_hard_link.txt
[root@oldboyedu oldboy]# ll
total 8
-rw-r--r--. 2 root root 13 Apr 16 10:49 oldboy_hard_link.txt
-rw-r--r--. 2 root root 13 Apr 16 10:49 oldboy.txt
# 利用find命令找到多有硬链接文件
[root@oldboyedu oldboy]# find / -type f -inum 33584339
/etc/hosts
/tmp/hosts
# 系统中的目录不能创建硬链接
[root@oldboyedu ~]# ll /etc/|grep -c "^d"
78
[root@oldboyedu ~]# ll /etc/|grep "^d"|wc -l
78
12.2 软链接:
# 概念说明: 文件的快捷方式
# 特点:
1.软链接最好采用绝对路径,否则容易失效
2.链接源文件删除,会影响软链接
# 诞生过程:
ln -s 链接的源文件 软链接的文件信息
[root@oldboyedu oldboy]# ln -s /oldboy/oldboy.txt /oldboy/oldboy_soft_link.txt
[root@oldboyedu oldboy]# ll
total 8
lrwxrwxrwx. 1 root root 18 Apr 16 10:50 oldboy_soft_link.txt -> /oldboy/oldboy.txt
-rw-r--r--. 2 root root 13 Apr 16 10:49 oldboy.txt
12.3 软硬链接的区别
# 软硬链接的区别:
01. 链接后的文件大小不一致
02. 链接后的文件类型和权限不一致(颜色不一致)
03. 链接后的文件和源文件 inode信息有出入
硬链接inode号码一致
软链接inode号码不一样
04. 源文件被删除之后
硬链接文件依然有效
软链接文件失效
05. 软硬链接创建过程不一致
13. 和时间相关的命令
# 时间相关的命令 date
# 01. 查看时间信息:
[root@oldboyedu ~]# date
Tue Apr 16 11:49:51 CST 2019
# 02. 调整时间显示格式
[root@oldboyedu ~]# date +%F
2019-04-16
[root@oldboyedu ~]# date "+%F %T"
2019-04-16 11:52:54
[root@oldboyedu ~]# date "+%y-%m-%d %H:%M:%S"
19-04-16 11:53:58
cp oldboy.log oldboy.log-$(date "+%F_%T")
# 显示历史时间信息:
date +%F -d "-2day"
date +%F -d "1 day ago"
# 显示未来时间信息:
date -d "+2day"
date -d "2day"
# 系统自动的备份数据 00:00 4月16日 -- 4月17日 00:00
cp /oldboy/oldboy.log /log/oldboy.log.$(date +%F)
调整:
cp /oldboy/oldboy.log /log/oldboy.log.$(date +%F -d "-1day")
# 03. 如何实际修改系统时间
[root@oldboyedu oldboy]# date -s "2020-04-17"
Fri Apr 17 00:00:00 CST 2020
[root@oldboyedu oldboy]# date
Fri Apr 17 00:00:17 CST 2020
[root@oldboyedu oldboy]# date -s "2020/04/17 14:00"
Fri Apr 17 14:00:00 CST 2020
# 04. 时间同步方法
yum install -y ntpdate
ntpdate
[root@oldboyedu oldboy]# ntpdate ntp1.aliyun.com
16 Apr 12:22:33 ntpdate[25718]: step time server 120.25.115.20 offset 268748517.381960 sec
[root@oldboyedu oldboy]# date
Tue Apr 16 12:22:48 CST 2019
作业:
基础作业:
1. 总结find命令
2. 总结文件属性信息
扩展作业:
1. 如何产生随机字符信息
利用/dev/urandom文件生成随机数
新来10个运维 10个账号
===========================
作业:
01. 如何将一个目录中以.txt结尾的文件,统一进行压缩处理
/oldboy/
oldboy01.txt
oldboy02.txt
oldboy03.txt
oldboy04.jpg
oldboy05.png
思路:
01. 将以.txt结尾的文件找出来
02. 利用tar命令再进行打包
# find oldboy/ -type f -name "*.txt" | xargs tar zcvf oldboy.tar.gz
# tar zcvf oldboy.tar.gz `find oldboy/ -type f -name "*.txt" `
02. 如何找出/oldboy目录中.txt结尾的文件,将找出的文件进行统一删除
# find oldboy/ -type f -name "*.txt" | xargs rm -rf
# find oldboy/ -type f -name "*.txt" -delete
# find oldboy/ -type f -name "*.txt" -exec rm -rf {} ;
03. 如何找出/oldboy目录中.txt结尾的文件,将找出的文件进行批量复制/移动到/tmp目录中
# find /root/oldboy -type f -name "*.txt"|xargs -i cp {} /tmp/
# find /root/oldboy -type f -name "*.txt" -exec cp {} /tmp ;
===================================
作业:
01. 如何修改磁盘中block大小 如何进行查看默认的block大小
02. 总结数据存储与读取原理
03. 磁盘满无法存储数据的原因
04. linux系统中读取数据的原理(数据无法读取-权限阻止) 权限章节
/oldboy/oldboy01/oldboy.txt
05. 总结英文月份信息 星期信息
06. 如何将文件彻底删除