Linux文件管理

文件管理

Linux 系统的单根⽬录结构

linux与windows的⽬录结构对⽐

⽂件的时间

1
2
3
4
5
6
7
8
ls -l ⽂件名 仅看的是⽂件的修改时间
Linux⽂件有三种时间,⽤stat查看

例如:stat anaconda-ks.cfg

访问时间:atime,查看内容,⽤cat检测
修改时间:mtime,修改内容
改变时间:ctime,修改内容,修改权限等属性,凡是有改动都会变

文件类型概念说明

1、文件详细信息详解

1
2
3
4
[root@localhost ~]# ls -lhi
总用量 8K
134319695 -rw-------. 1 root root 1.7K Dec 8 12:08 anaconda-ks.cfg
134319707 -rw-r--r-- 1 root root 12 Dec 13 11:48 index

文件属性信息详述图

image-20211216191817853

2、inode编号

  • Linux系统中文件的唯一编号,就相当于身份证号。
1
2
3
4
5
6
7
8
9
10
Linux系统内部不使用文件名,而使用inode编号来识别文件
对于系统来说,文件名只是inode编号便于识别的别称或者绰号,表面上用户通过文件名打开文件
实际上系统内部这个过程分成立三步:
首先:系统找到这个文件名对应的inode编号
其次:通过ionde编号获取inode信息
最后:根据ionde信息找到文件数据所在的block,读出数据

使用ls -i命令可以看到文件对应额inode编号
[root@localhost data]# ls -i
16781387 test

硬链接和软链接

1、什么是硬链接

  • 硬链接:不具有完整的文件结构,它的文件名直接指向文件节点,它和源文件节点一致。
    • 硬链接用来指向(保存)inode编号。

2、什么是软链接

  • 软链接:具有完整的文件结构,最后指向的是目标文件名,它和源文件节点不一致。
    • 相当于Windows中的快捷方式,主要用来指向(保存)对应文件的路径。

3、创建命令

  • ln 默认创建的就是硬链接
    • 参数: -s 创建的就是软链接
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
# 硬链接示例:ln [源文件] [链接文件名]  
[root@localhost test]# echo 'hello world' >> a.txt #创建源文件添加数据

[root@localhost test]# ls -i 1.txt #查看的inode编号
16781390 1.txt

[root@localhost test]# ln 1.txt 2.txt #创建硬链接
[root@localhost test]# ls -i 1.txt
16781390 1.txt
[root@localhost test]# ls -i 2.txt #两个文件的inode编号一模一样,数据也一样
16781390 2.txt

# 软链接示例:ln -s [源文件] [链接文件名]
[root@localhost haha]# echo '123' >> a.txt #创建源文件添加数据

[root@localhost haha]# ls -i a.txt #查看的inode编号
33712451 a.txt

[root@localhost haha]# ln -s a.txt b.txt #创建软链接
[root@localhost haha]# ls -i a.txt
33712451 a.txt
[root@localhost haha]# ls -i b.txt #两个文件的inode编号不一样,数据也一样
33712452 b.txt


# 删除文件的底层逻辑
1、删除的是硬链接
2、判断该文件硬链接数是否为0
3、如果为0,则在磁盘中将其删除
4、如果不为0,则只删除一个硬链接


# 删除源文件软链接和硬链接的影响
查看软链接文件,查看的文件不存在。和windows一样,删除源文件,快捷方式也用不了。但是删除源文件,为什么硬链接文件还可以查看呢?
这里要简单说下i节点了。i节点是文件和目录的唯一标识,每个文件和目录必有i节点,不然操作系统就无法识别该文件或系统,就像没有上户口的黑户。linux操作系统是不识别些字母的。

通俗理解:
硬链接文件相当于文件硬链接数+1,在windows里没这个概念,删除文件删除的是硬链接数,硬链接数为0时,数据就没了
软连接就是指向文件的路径,文件删除了,路径就不存在了,所以软连接找不到了

文件类型

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
Linux⽂件没有扩展名!!!

#⽅法⼀:
ls -l ⽂件名 #看第⼀个字符
- #普通⽂件(⽂本⽂件,⼆进制,压缩⽂件,电影,图⽚。。。),例如:/bin/ls
[root@localhost ~]# ls -l
-rw-r--r-- 1 root root 0 12月 14 19:11 1

d #⽬录⽂件,例如/home/
[root@localhost home]# ls -l
drwx------ 2 test test 63 12月 14 19:13 test


b #设备⽂件(块设备)存储设备硬盘,U盘,例如:/dev/sda
[root@localhost dev]# ll
brw-rw---- 1 root disk 8, 0 12月 16 19:39 sda


c #设备⽂件(字符设备)打印机,例如:/dev/ttycc
[root@localhost dev]# ll
crw-rw-rw- 1 root tty 5, 0 12月 16 19:39 tty


s #套接字⽂件(socket),例如: /var/lib/mysql/
[root@localhost mysql]# ll
srwxrwxrwx 1 mysql mysql 0 12月 16 21:52 mysql.sock


p #管道⽂件,例如:/run/systemd/initctl/fifo
[root@localhost initctl]# ll
prw------- 1 root root 0 12月 16 19:39 fifo

l #链接⽂件,例如:/bin
[root@localhost bin]# ll
lrwxrwxrwx. 1 root root 6 12月 13 11:40 apropos -> whatis


ps:通过颜⾊判断⽂件的类型是错误的!!!

# 准备套接字文件
#安装mysql数据库
[root@localhost run]# yum install mariadb* -y
#启动
[root@localhost run]# systemctl start mariadb



# ⽅法⼆:大致判断文件的类型
[root@xxx ~]# file /etc/krb5.conf
/etc/krb5.conf: ASCII text

.conf #配置文件
.log #日志文件
.sh #脚本文件
.py #脚本文件