三、Linux文件与目录管理

1.查看文件或目录信息

[root@localhost ~]# ls -l
总用量 16
#文档的权限信息    文档的硬连接数量    #文档的归属用户       #文档的用户组        #文件大小      #问的的最后修改时间    #文档名称( ---> 某个目录 说明这是一个连接文档)
lrwxrwxrwx.       1                 root                 root                7             1119 17:41         bin -> usr/bin
#文档的权限信息    文档的硬连接数量    #文档的归属用户       #文档的用户组        #文件大小      #问的的最后修改时间    #文档名称(如果文件名称带.说明是隐藏文件)
dr-xr-xr-x.       5                 root                 root                4096          1119 17:45         boot

在这里插入图片描述

1.1第一列,权限信息

在这里插入图片描述
第0位确定文件类型,第1-3位确定属主(该文件的所有者)拥有该文件的权限。第4-6位确定属组(所有者的同组用户)拥有该文件的权限,第7-9位确定其他用户拥有该文件的权限。

在Linux中第0位字符代表这个文件是目录、文件或链接文件等等。
	当为[ d ]则是目录(文件夹)
	当为[ - ]则是文件;
	若是[ l ]则表示为链接文档(link file);
	若是[ b ]则表示为装置文件里面的可供储存的接口设备(可随机存取装置);
	若是[ c ]则表示为装置文件里面的串行端口设备,例如键盘、鼠标(一次性读取装置)[ r ]代表可读(read)[ w ]代表可写(write)[ x ]代表可执行(execute)。
	第1,2,3位,文件所有者拥有的权限rwx
	第4,5,6位,同组用户拥有的权限rwx
	第7,8,9位,其他用户拥有的权限rwx
其中:
	第147位表示读权限,"r"表示有读权限,"-"表示没有读权限;
	第258位表示写权限,"w"表示有写权限,"-"表示没有写权限;
	第369位表示可执行权限,"x"表示有可执行权限,"-"表示没有可执行权限;

1.2 第二列 inode 节点连结数

1.2.1 inode简介

文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。
由8个扇区组成的"块",是文件存取的最小单位,"块"的大小,最常见的是4KB。
文件存储到块中,需要保存块的元信息,信息包括文件的创建者,创建时间,大小等等
这种存储元信息的区域成为inode,索引节点(index node)

1.2.2 inode内容

inode包含文件的元信息,具体来说有以下内容:
	* 文件的字节数
  * 文件拥有者的User ID
  * 文件的Group ID
  * 文件的读、写、执行权限
  * 文件的时间戳,共有三个:ctime指inode上一次变动的时间,mtime指文件内容上一次变动的时间,atime指文件上一次打开的时间。
  * 链接数,即有多少文件名指向这个inode
  * 文件数据block的位置

一般情况下
创建一个文件默认的inode数量为 1
创建一个目录的默认inode数量为 2
为啥呢 ? 因为一个目录有两个隐藏的目录
一个叫 . 是当前目录的相对名称
一个叫 … 是当前目录的上一级目录的相对名称
linux中有几个相对目录的名称 需要大家注意
~ 指 家目录
. 指当前目录
… 指当前目录的上一级目录
在这里插入图片描述
1、 使用 df 命令,查看文件系统的inode使用情况

[root@localhost /]# df -i
文件系统                  Inode 已用(I) 可用(I) 已用(I)% 挂载点
/dev/mapper/centos-root 8910848   26175 8884673       1% /
devtmpfs                 121689     387  121302       1% /dev
tmpfs                    124747       1  124746       1% /dev/shm
tmpfs                    124747     755  123992       1% /run
tmpfs                    124747      16  124731       1% /sys/fs/cgroup
/dev/sda1                524288     326  523962       1% /boot
tmpfs                    124747       1  124746       1% /run/user/0

2、使用stat命令,查看某个文件的inode信息:stat 文件名

[root@localhost /]# stat /bin
  文件:"/bin" -> "usr/bin"
  大小:7               块:0          IO 块:4096   符号链接
设备:fd00h/64768d      Inode:18933       硬链接:1
权限:(0777/lrwxrwxrwx)  Uid:(    0/    root)   Gid:(    0/    root)
环境:system_u:object_r:bin_t:s0
最近访问:2019-08-21 12:01:02.023891380 +0800
最近更改:2019-08-19 19:14:50.442002362 +0800
最近改动:2019-08-19 19:14:50.443002362 +0800

1.2.3 inode的使用

Linux 是如何读取数据的?
Linux系统内部不使用文件名,而使用inode号码来识别文件。
实际上,系统内部这个过程分成三步:
1)首先,系统找到这个文件名对应的inode号码;
2)其次,通过inode号码,获取inode信息,可以获得当前文件存储的块的位置;
3)最后,根据inode信息,找到块的位置,读取文件。

2.Linux 链接概念

windows系统对文件的粘贴复制可以产生很多文件,但是内容相同,浪费了空间,所以linux采用inode读取文件的形式,可以让两个不同的文件名指向同一个物理文件
Linux 链接解决的就是一个数据块的共享问题

2.1硬连接

硬连接指通过索引节点来进行连接。
多个文件名指向同一索引节点是存在的。
比如: A 是 B 的硬链接(A 和 B 都是文件名),则 A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号相同,即一个 inode 节点对应两个不同的文件名,两个文件名指向同一个文件,A 和 B 对文件系统来说是完全平等的。删除其中任何一个都不会影响另外一个的访问。
作用: 是允许一个文件拥有多个有效路径名,这样用户就可以建立硬连接到重要文件,以防止“误删”的功能。

2.2软连接

另外一种连接称之为符号连接(Symbolic Link),也叫软连接。软链接文件有类似于 Windows 的快捷方式。它实际上是一个特殊的文件。在符号连接中,文件实际上是一个文本文件,其中包含的有另一文件的位置信息。
比如: A 是 B 的软链接(A 和 B 都是文件名),A 的目录项中的 inode 节点号与 B 的目录项中的 inode 节点号不相同,A 和 B 指向的是两个不同的 inode,继而指向两块不同的数据块。但是 A 的数据块中存放的只是 B 的路径名(可以根据这个找到 B 的目录项)。
作用: A 和 B 之间是“主从”关系,如果 B 被删除了,A 仍然存在(因为两个是不同的文件),但指向的是一个无效的链接。

2.3 ln命令

语法格式:
	ln [参数][源文件或目录][目标文件或目录]
命令功能:
	为某一个文件在另外一个位置建立一个同步的链接。
参数
	必要参数:
		-b 删除,覆盖以前建立的链接
		-d 允许超级用户制作目录的硬链接
		-f 强制执行
		-i 交互模式,文件存在则提示用户是否覆盖
		-n 把符号链接视为一般目录
		-s 软链接(符号链接)
		-v 显示详细的处理过程
	选择参数:
		-S "-S<字尾备份字符串> ""--suffix=<字尾备份字符串>"
		-V "-V<备份方式>""--version-control=<备份方式>"
		--help 显示帮助信息
		--version 显示版本信息

实例操作

[root@localhost ~]# touch file1		//创建文件file1
[root@localhost ~]# ln file1 file2	//创建file1的硬链接file2
[root@localhost ~]# ln -s file1 file3	//创建file1的软连接file3
[root@localhost ~]# ll		//查看
总用量 4
-rw-------. 1 root root 1241 819 19:22 anaconda-ks.cfg
-rw-r--r--. 2 root root    0 821 18:08 file1
-rw-r--r--. 2 root root    0 821 18:08 file2
lrwxrwxrwx. 1 root root    5 821 18:09 file3 -> file1
[root@localhost ~]# echo 'hello link' >>file1	//将数据写入file1
[root@localhost ~]# cat file1	//查看file1的内容
hello link
[root@localhost ~]# cat file2	//查看硬链接
hello link
[root@localhost ~]# cat file3	//查看软连接
hello link
[root@localhost ~]# rm -f file1		//删除源文件
[root@localhost ~]# cat file2	//再次查看硬链接
hello link
[root@localhost ~]# cat file3	//再次查看软链接
cat: file3: 没有那个文件或目录
[root@localhost ~]# ll	//再次查看
总用量 8
-rw-------. 1 root root 1241 819 19:22 anaconda-ks.cfg
-rw-r--r--. 1 root root   11 821 18:10 file2
lrwxrwxrwx. 1 root root    5 821 18:09 file3 -> file1//软连接此处标红,无效的软连接

总结
1).删除软连接对原始文件没有影响,因为它只是一个快捷方式;
2).删除硬连接对原始文件和软连接没有影响,因为他是一个独立的文件;
3).删除原文件,对硬连接没有影响,导致软连接失效;
4) 同时删除原始文件和所有的硬链接,整个文件会真正的被删除。
以后我们会经常给某些文件或目录创建各种连接,所以ln命令大家要熟记;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值