Linux文件与目录管理
1.查看文件或目录信息
[root@localhost ~]# ls -l
总用量 16
#文档的权限信息 文档的硬连接数量 #文档的归属用户 #文档的用户组 #文件大小 #问的的最后修改时间 #文档名称( ---> 某个目录 说明这是一个连接文档)
lrwxrwxrwx. 1 root root 7 11月 19 17:41 bin -> usr/bin
#文档的权限信息 文档的硬连接数量 #文档的归属用户 #文档的用户组 #文件大小 #问的的最后修改时间 #文档名称(如果文件名称带.说明是隐藏文件)
dr-xr-xr-x. 5 root root 4096 11月 19 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
其中:
第1、4、7位表示读权限,"r"表示有读权限,"-"表示没有读权限;
第2、5、8位表示写权限,"w"表示有写权限,"-"表示没有写权限;
第3、6、9位表示可执行权限,"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 8月 19 19:22 anaconda-ks.cfg
-rw-r--r--. 2 root root 0 8月 21 18:08 file1
-rw-r--r--. 2 root root 0 8月 21 18:08 file2
lrwxrwxrwx. 1 root root 5 8月 21 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 8月 19 19:22 anaconda-ks.cfg
-rw-r--r--. 1 root root 11 8月 21 18:10 file2
lrwxrwxrwx. 1 root root 5 8月 21 18:09 file3 -> file1//软连接此处标红,无效的软连接
总结
1).删除软连接对原始文件没有影响,因为它只是一个快捷方式;
2).删除硬连接对原始文件和软连接没有影响,因为他是一个独立的文件;
3).删除原文件,对硬连接没有影响,导致软连接失效;
4) 同时删除原始文件和所有的硬链接,整个文件会真正的被删除。
以后我们会经常给某些文件或目录创建各种连接,所以ln命令大家要熟记;