Linux文件属性及文件类型
[root@leijia /]# ls -li
total 228
1564673 drwxr-xr-x 4 root root 4096 Jan 23 2021 advanced-php
- 第一列 索引节点,形态是数字
索引节点是磁盘上的一块
存储空间
inode 特点:
- 是文件唯一标识
- 大小256字节
- 存放文件属性信息及指向文件所在位置信息
- 创建文件的时候分配idode
- 一个文件有且只有一个inode(分区磁盘内)
- 多个文件有相同的inode,是同一个文件的不同文件名。这样的文件被称为硬链接文件
block介绍:
- 存放文件实体内容的空间
- 默认大小1, 2, 4k.
- 一个block只能被一个文件占有,不能放两个文件。如果文件大小0.1k,也会占一个block,剩余3.9k浪费了
- block是文件系统存储大小的基本单位。如果文件较大,设置block大点好,读取是按block读取。block是4k,一次读4k
分布式系统,block可能到64kblock 特点:
- 磁盘读取数据就是按block为单位读取的。
- 每读取一个block就会消耗一次磁盘I/O(input/output)
- 若文件比较大,一个文件可能占用多个block。
- 若文件比较小,一个block剩余空间会被浪费,无论内容有多少。
查看文件inode命令
[root@leijia /]# ls -li
total 228
1564673 drwxr-xr-x 4 root root 4096 Jan 23 2021 advanced-php
查看磁盘和分区inode
[root@leijia /]# df -i
文件系统 Inodes 已用(I) 可用(I) 已用(I)% 挂载点
devtmpfs 233040 317 232723 1% /dev
tmpfs 235480 13 235467 1% /dev/shm
tmpfs 235480 414 235066 1% /run
tmpfs 235480 16 235464 1% /sys/fs/cgroup
/dev/vda1 3276800 274889 3001911 9% /
tmpfs 235480 1 235479 1% /run/user/1002
tmpfs 235480 1 235479 1% /run/user/0
查看磁盘和分区的大小(block)
[root@leijia /]# df -h
文件系统 容量 已用 可用 已用% 挂载点ZZ
devtmpfs 911M 0 911M 0% /dev
tmpfs 920M 48K 920M 1% /dev/shm
tmpfs 920M 340K 920M 1% /run
tmpfs 920M 0 920M 0% /sys/fs/cgroup
/dev/vda1 50G 21G 27G 45% /
tmpfs 184M 0 184M 0% /run/user/1002
tmpfs 184M 0 184M 0% /run/user/0
- 第二列,首字符代表文件类型中间9个字符,文件权限.和selinux(高级安全组件) 相关符号
- 第三列 硬链接数
- 链接分两种:一种是硬链接(Hard Link),另一种为软链接(Soft Link)
- 命令是
ln
如果使用
ln -s
创建链接则为软链接,软链接文件的文件类型为l(字母L)。
创建硬链接语法:ln 【原始文件】 【目标文件】
(注意空格)。
创建软链接语法:ln -s 【原始文件】 【目标文件】
(目标文件不能事先存在)
- 什么是
硬链接
?
具有相同索引节点号的文件,互相称之为硬链接文件- 硬链接文件的作用
用于备份,防止误删文件- 找一找互为硬链接文件
.
和当前目录互为硬链接文件,点和当前目录是一个目录?(可以这么理解)
..
和上一级目录互为硬链接文件。
特征:索引节点相同。- 硬链接知识
- 具有相同inode节点号的多个文件互为硬链接文件,本质是相同文件不同文件名。
- 删除硬链接文件或者删除源文件任意之一,文件实体并未被删除,只有删除了源文件及所有对应的硬链接文件,文件实体才会被删除
- 待所有的硬链接文件及源文件被删除后,在存放新的数据会占用这个文件的空间,或者磁盘fsck检查(检查inode是否有指向)的时候,删除的数据也会被系统回收
- 硬链接文件就是文件的另一个入口(相当于超市的前门,后门)
- 可以通过给文件设置硬链接文件,来防止重要文件误删
- 硬链接是普通文件,因此可以用rm命令删除
- 硬链接文件只能针对文件,不能针对目录
- 对于静态文件(没有进程正在调用的文件)来讲,当对应硬链接数为0,文件就被删除。硬链接查看方法
ls -lhi
查看结果的第3列
- 什么是
软链接
?:
- 软链接是快捷方式,指向源文件位置
8.为什么需要软链接?作用- 复杂路径简单化:ln -s /etc/sysconfig/network-scripts/ifcfg-eth0 ~/eth0
- 企业作用:编译安装的软件升级时候
- 软链接知识:
- 软链接类似于window快捷方式(可以通过readlink 查看)
- 软链接类似一个文本文件,里面存放源文件路径,指向源文件实体
- 删除源文件,软链接依然存在,但是无法访问指向源文件内容,链接失效一般是白字红底闪烁提示
- 软链接和源文件是不同类型文件,也是不同的文件,inode号也不同
- 软链接文件类型是字母(L),可以
rm
删除- 软链接文件不仅可以针对文件,更可以针对目录(企业常用)
- 第四列 用户
- 第五列 组
- 第六列 文件大小(目录不是)
- 第七-九列 日期时间
- 第十列 文件名
linux 文件类型区分(不根据扩展名区分与windos不同)一切皆文件
- - 普通文件(.doc word 文档 .pm4 .avi .txt .md …)
初步特征 文件名白色
- d 目录 directory
初步特征 目录名蓝色
- l 软链接文件
[root@leijia /]# ln -s /etc/hosts /tmp/a.hosts
[root@leijia /]# ls -l /tmp
lrwxrwxrwx 1 root root 10 Nov 8 22:24 a.hosts -> /etc/hosts
- c 字符设备
[root@leijia /]# ll /dev
crw-rw---- 1 root tty 7, 2 Jan 10 2021 vcs2
crw-rw---- 1 root tty 7, 3 Jan 10 2021 vcs3
crw-rw---- 1 root tty 7, 4 Jan 10 2021 vcs4
crw-rw---- 1 root tty 7, 5 Jan 10 2021 vcs5
crw-rw---- 1 root tty 7, 6 Jan 10 2021 vcs6
- b 块设备 (磁盘)
[root@leijia /]# ll /dev/sd*
- s sock文件
[root@leijia /]# find / -type s #查看文件类型
[root@leijia /]# ls -l /run
srw-rw-rw- 1 root root 0 Apr 7 2021 acpid.socket
- file 文件名 查看文件类型
wc 查看行数
[root@leijia /]# wc -l /etc/hosts
8 /etc/hosts
[root@leijia /]# echo /etc/hosts|wc -L
11
du 查看目录大小
du -sh /etc/hosts
which 查看二进制命令所在路径(从PATH环境变量路径里查找)
where 查看文件及文件帮助等路径
locate 查看文件
find 重点查找命令
- find 路径 选项 参数 选项2 参数2
- 按名字查找:
find / -name “hosts” - 按名字模糊查找 * 表示
find / -name “ho*ts” - 按类型查找
类型: f d l c b s
查找文件:find / -type f
查找目录:find / -type d - 组合查找: find 默认就是取交集(-a) and ,并集(-o) -or
-o 查找并集 查找名为hosts文件或者类型为d
find / -name “hosts” -o -type d -name “oldboy” - find 查找取反:!查找名字不是fil
find /data ! -name “file” - 按文件大小查找 find / -size +10M
单位 K M G
-size +1M 大于一M
-size 1M 大于一M
-size -1M 小于一M - 按照时间查找
创建文件
for i in {01…30};do date -s “2030/05/0$i”; touch /tmp/aaa/file$i;done
find /tmp/aaa/file -mtime -7|sort -r 查找最近7天文件
-mtime 按修改时间查找(重要)
-mtime +7 #7天以前的
-mtime 7 #第7天的
-mtime -7 #最近7天
-atime 按访问时间查找
-ctime 按改变时间查找
- 按权限查找: -perm
find ./ -perm 755 - 按用户查找: -user
find ./ -user root - 对找到的东西进行处理
-exec 执行动作
第一种删除方式:find /tmp/aaa -name “file*” -mtime +7 -exec rm -f {}
原理:
rm -f file01
rm -f file02(效率较低,有一万个文件执行1万次命令)
第二种: rm -f $(find /tmp/aaa -name “file*” -type f -mtime +7)
rm -f `find /tmp/aaa -name “file*” -type f -mtime -7`
第三种:需要加-i 才能把find查找结果放到花括号执行
find /tmp/aaa -name “file*” -mtime +7 |xargs -i rm -f {}
简写:find /tmp/aaa -name “file*” -mtime +7 |xargs rm -f
原理:rm -f file01 file02 file03 …file30(批量删除效率高,不管多少个文件,执行一次命令)
find 与cp 组合:find /home -size +10M -mtime +7|xargs -i cp {} /tmp
更改文件属性
chgrp 直接更改用户组
- chown 用户.用户组 文件 #
.
可以用;
替代 - chown 用户 文件 #只改用户
- chown .用户组 文件 #只改用户组
chown oldboy10.1016 aaa.log
[root@l /]# ls -l aaa.log
-rw-r--r-- 1 oldboy10 oldboy10 14 May 31 02:13 aaa.log
chown oldboy09 aaa.log
[root@l /]# ls -l aaa.log
-rw-r--r-- 1 oldboy09 oldboy10 14 May 31 02:13 aaa.log
chown .1016 aaa.log
[root@l /]# ls -l aaa.log
-rw-r--r-- 1 oldboy09 oldboy10 14 May 31 02:13 aaa.log
-R
参数 递归更改
[root@l /]# chown -R oldboy10 aaa
[root@l /]# ls -ld aaa
drwxr-xr-x 2 oldboy10 root 4096 Jul 5 21:11 aaa
[root@l /]# ls -l aaa
total 0
-rw-r--r-- 1 oldboy10 root 0 Jul 5 21:11 1.txt
-rw-r--r-- 1 oldboy10 root 0 Jul 5 21:11 2.txt
-rw-r--r-- 1 oldboy10 root 0 Jul 5 21:11 3.txt