文件属性和类型
# 比如我ll看一个东西
[root@localhost ~]# ll 001
-rw-r--r--. 1 root root 23 Aug 25 09:24 001
-rw-r--r--. 文件类型及权限
1 文件硬链接次数
root 文件所属用户
root 所属组
23 文件大小
Aug 25 09:24 时间戳:文件最新修改的时间
001 文件或目录名
-rw-r--r--. 里面第一个字符的含义即代表文件类型:
-:普通文件(文本,二进制,压缩,图片等)
d: 目录
l:软连接文件
c:字符设备文件 比如:打印机,终端 比如/dev/tty1
b:块设备文件 比如:磁盘 u盘 光驱 比如/dev/sda1 /dev/sda2
s:安全套接字文件,socket 一部分客户端与服务端建立链接 就是一些socket
p:管道文件
比如:
[root@localhost ~]# ll /dev/tty
crw-rw-rw-. 1 root tty 5, 0 Sep 4 08:57 /dev/tty
## 注意: linux文件扩展名不代表任何含义, 仅仅是为了运维人员便于识别
# 又如:
# ls -h 以人类理解方式显示 -i显示Inode号(索引节点)
[root@localhost ~]# ls -lhi
total 8.0K
33574979 -rw-------. 1 root root 1.5K Aug 17 15:28 anaconda-ks.cfg
33575027 drwxr-xr-x. 2 root root 6 Aug 18 20:55 sky
33634575 -rw-r--r--. 1 root root 48 Aug 20 11:19 sky.txt
33575025 -rw-r--r--. 1 root root 0 Aug 18 20:04 test.txt
[root@localhost ~]# ll 001
-rw-r--r--. 1 root root 23 Aug 25 09:24 001
[root@localhost ~]# ll 1.txt
-rw-r--r--. 1 root root 156 Aug 25 20:08 1.txt
# 文件的真实数据(文件内容)占用的磁盘空间:block
比如1.txt文本内容的156k
# 文件的元数据(文件的属性)占用的磁盘空间:inode
比如 属主 属组 日期 大小 权限等 (文件名不算)(文件名在上级目录的block里)
# 特点:
1.一个非空文件至少要占用一个Inode(有且只有一个)和一个block(可以有多个)
2.磁盘是由n多个block组成的 一个block是4k 磁盘读取数据是以block为单位读取的,每读一个block消耗一次磁盘IO
# 磁盘要想使用,需先分区,格式化创建文件系统(如linux装机时是ext系统)时,就会生成大量的inode和block
df -i
df -h
# 软链接 相当于windows里的快捷方式,软链接文件会将inode指向源文件的block
如:
[root@localhost ~]# ll /bin
lrwxrwxrwx. 1 root root 7 Aug 17 15:23 /bin -> usr/bin
## 如何创建软链接
ln -s 源文件 新文件/名字
比如:我给我的1.txt创建软链接1txt:
[root@localhost ~]# ln -s 1.txt 1txt ln -s命令即可创建
[root@localhost ~]# ll 1txt 看一眼
lrwxrwxrwx. 1 root root 5 Aug 27 11:34 1txt -> 1.txt
[root@localhost ~]# cat 1txt
锄禾日当午
汗滴禾下土
谁知盘中餐
粒粒皆辛苦
床前明月光
疑是地上霜
举头望明月
低头思故乡
席梦思软床
wwwww
WWWWW
# 特性
当我们访问这个软链接文件时,其实就是在访问源文件的本身。
1.那么当我们对一个文件创建多个软链接时,其实就是多个inode指向同一个block。
2.那么当我们删除软链接文件时,其实只是删除了一个inode的指向,并不会对源文件造成影响。
(比如删除快捷方式,QQ照样用)
3.如果我们删除的是源文件,那么该文件的所有软链接文件都会失效。(比如你卸载QQ,快捷方式就废了)
4.软连接文件名字可以和源文件名字不一样
5.软连接和源文件的inode号不同
6.可以跨区创建
# 软链接的应用场景
1)软件升级
2)代码发布
3)不方便移动的目录
4)数据回滚
5)程序读取
# 概念
如果两个或多个文件具有相同的 inode 值,即使它们 的文件 名不一样,位置不一样,它们 的 内容、所有者、权限其实都是一样 的 ,我们可以将其视为相同文件 。这类型 的文件 其实就是所谓 的 「硬链接」。硬链接 具有相同的 inode 值,但 文件 名不一样
# 如何创建(把-s去掉)
ln 路径/源文件 新路径/名字
# 相当于备份
# 特性
1、inode号相同(ll -i 可以看inode号)
2、不可以跨区创建
3、不受源文件影响
# 例如
[root@localhost ~]# ln 1.txt 牛人啊
[root@localhost ~]# ll -i
total 4
33574987 -rw-r--r-- 3 root root 0 Oct 5 12:22 1
33574987 -rw-r--r-- 3 root root 0 Oct 5 12:22 1.txt
33574979 -rw-------. 1 root root 1447 Aug 17 15:28 anaconda-ks.cfg
33574987 -rw-r--r-- 3 root root 0 Oct 5 12:22 牛人啊
[root@localhost ~]# vim 牛人啊
我勒个去
[root@localhost ~]# cat 1
我勒个去
内容相同。可见是操作的同一个文件。
总结:
1)创建命令不同
软链接:ln -s
硬链接:ln
2)目录不能创建硬链接,并且硬链接不可以跨越系统的分区,软链接可以
3)硬链接文件与源文件inode相同,软链接文件与源文件inode不同
4)删除软链接文件,对源文件无影响,但是删除软链接源文件对软链接文件有影响
5)删除硬链接文件,对源文件也无影响,并且删除源文件,对硬链接文件也无影响