ll查看文件属性每列信息意义,软硬硬链接的不同和使用方法,应用场景
Linux文件属性及类型
[root@localhost ~]# ll anaconda-ks.cfg 文件类型 权限 硬连接数 文件的大小 文件的创建,修改时间 - rw-------. 1 root root 1379 3月 12 17:43 anaconda-ks.cfg [root@localhost ~]# ll -d zls 文件类型 权限 硬连接数 所属用户 所属用户组 文件的大小 文件的创建修改时间 d rwxr-xr-x. 2 root root 6 3月 12 18:00 文件名 zls -:普通文件 d:目录文件 rw- --- --- :权限 rwx r-x r-x :权限 r:读 read w:写 write x:执行权限 execute
Linux系统文件的类型
ll 查看 file # 查看文件类型 - 普通文件 d directory 目录文件 c char 字符设备文件 b block 块设备文件(用来存储数据的设备) s socket,安全套接字文件 l link 软链接文件(快捷方式) p pipe 管道文件 注意:通过颜色或者后缀判断文件类型不一定准确.
系统链接文件
一个文件分为两部分:
- 真实数据 block
- 元数据 inode
-
block:真实数据占用的空间,默认一个block 4k,使用下面命令查看
df -h
-
inode:元数据占用的空间,形容文件属性。
df -i # 查看inode使用情况 ls -i # 查看文件inode
模拟inode占满场景
[root@oldboy dev]# dd if=/dev/zero of=/opt/disk bs=1K count=1024 1024+0 records in 1024+0 records out 1048576 bytes (1.0 MB) copied, 0.00210524 s, 498 MB/s [root@oldboy dev]# ll /opt/disk -rw-r--r-- 1 root root 1048576 Mar 25 22:22 /opt/disk [root@oldboy dev]# mkfs.ext4 -i 1024 /opt/disk mke2fs 1.42.9 (28-Dec-2013) /opt/disk is not a block special device. Proceed anyway? (y,n) [root@oldboy dev]# mkfs.ext4 -i 1024 /opt/disk mke2fs 1.42.9 (28-Dec-2013) /opt/disk is not a block special device. Proceed anyway? (y,n) y Filesystem too small for a journal Discarding device blocks: done Filesystem label= OS type: Linux Block size=1024 (log=0) Fragment size=1024 (log=0) Stride=0 blocks, Stripe width=0 blocks 1024 inodes, 1024 blocks 51 blocks (4.98%) reserved for the super user First data block=1 Maximum filesystem blocks=1048576 1 block group 8192 blocks per group, 8192 fragments per group 1024 inodes per group Allocating group tables: done Writing inode tables: done Writing superblocks and filesystem accounting information: done [root@oldboy dev]# mkdir /data1 [root@oldboy dev]# mount -t ext4 -o loop /opt/disk /data1 [root@oldboy dev]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 28G 1.5G 27G 6% / devtmpfs 476M 0 476M 0% /dev tmpfs 487M 0 487M 0% /dev/shm tmpfs 487M 7.6M 479M 2% /run tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/sda1 497M 120M 378M 25% /boot tmpfs 98M 0 98M 0% /run/user/0 /dev/sr0 4.3G 4.3G 0 100% /mnt /dev/loop0 891K 21K 799K 3% /data1 [root@oldboy dev]# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda3 14423552 31519 14392033 1% / devtmpfs 121779 379 121400 1% /dev tmpfs 124487 1 124486 1% /dev/shm tmpfs 124487 704 123783 1% /run tmpfs 124487 16 124471 1% /sys/fs/cgroup /dev/sda1 256000 326 255674 1% /boot tmpfs 124487 1 124486 1% /run/user/0 /dev/sr0 0 0 0 - /mnt /dev/loop0 1024 11 1013 2% /data1 [root@oldboy dev]# cd /data1/ # 尝试创建1024个文件到1014的时候就创建不了了。 [root@oldboy data1]# touch file{1..1024} touch: cannot touch ‘file1014’: No space left on device touch: cannot touch ‘file1015’: No space left on device touch: cannot touch ‘file1016’: No space left on device touch: cannot touch ‘file1017’: No space left on device touch: cannot touch ‘file1018’: No space left on device touch: cannot touch ‘file1019’: No space left on device touch: cannot touch ‘file1020’: No space left on device touch: cannot touch ‘file1021’: No space left on device touch: cannot touch ‘file1022’: No space left on device touch: cannot touch ‘file1023’: No space left on device touch: cannot touch ‘file1024’: No space left on device # 磁盘空间未满 [root@oldboy data1]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 28G 1.5G 27G 6% / devtmpfs 476M 0 476M 0% /dev tmpfs 487M 0 487M 0% /dev/shm tmpfs 487M 7.6M 479M 2% /run tmpfs 487M 0 487M 0% /sys/fs/cgroup /dev/sda1 497M 120M 378M 25% /boot tmpfs 98M 0 98M 0% /run/user/0 /dev/sr0 4.3G 4.3G 0 100% /mnt /dev/loop0 891K 46K 774K 6% /data1 # inode已经是%100 [root@oldboy data1]# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/sda3 14423552 31519 14392033 1% / devtmpfs 121779 379 121400 1% /dev tmpfs 124487 1 124486 1% /dev/shm tmpfs 124487 704 123783 1% /run tmpfs 124487 16 124471 1% /sys/fs/cgroup /dev/sda1 256000 326 255674 1% /boot tmpfs 124487 1 124486 1% /run/user/0 /dev/sr0 0 0 0 - /mnt /dev/loop0 1024 1024 0 100% /data1 [root@oldboy data1]#
软链接
创建方式:
ln -s 文件或目录 链接名
软链接相当于windows的快捷方式,软链接文件会将inode
指向源文件的block
1.那么当我们对一个文件创建多个软链接时,其实就是多个inode
指向同一个block
。
[root@oldboy opt]# ln -s /opt/a.txt a1_softl [root@oldboy opt]# ln -s /opt/a.txt a2_softl [root@oldboy opt]# ln -s /opt/a.txt a3_softl [root@oldboy opt]# ll a*_so* lrwxrwxrwx 1 root root 10 Mar 25 22:32 a1_softl -> /opt/a.txt lrwxrwxrwx 1 root root 10 Mar 25 22:32 a2_softl -> /opt/a.txt lrwxrwxrwx 1 root root 10 Mar 25 22:32 a3_softl -> /opt/a.txt [root@oldboy opt]# ll -i a1_softl a2_softl a3_softl a.txt 16782001 lrwxrwxrwx 1 root root 10 Mar 25 22:32 a1_softl -> /opt/a.txt 16782002 lrwxrwxrwx 1 root root 10 Mar 25 22:32 a2_softl -> /opt/a.txt 16782003 lrwxrwxrwx 1 root root 10 Mar 25 22:32 a3_softl -> /opt/a.txt 17174724 -rw-r--r-- 1 root root 13 Mar 23 16:51 a.txt [root@oldboy opt]# cat a1_softl aaabbbccc [root@oldboy opt]# cat a2_softl aaabbbccc [root@oldboy opt]# cat a3_softl aaabbbccc [root@oldboy opt]#
2.那么当我们删除软链接文件时,其实只是删除了一个inode
的指向,并不会对源文件造成影响。
[root@oldboy opt]# rm a1_softl rm: remove symbolic link ‘a1_softl’? y [root@oldboy opt]# rm a2_softl rm: remove symbolic link ‘a2_softl’? y [root@oldboy opt]# cat a.txt aaabbbccc [root@oldboy opt]#
3.如果我们删除的是源文件,那么该文件的所有软链接文件都会失效。
[root@oldboy opt]# ll total 264 lrwxrwxrwx 1 root root 10 Mar 25 22:32 a3_softl -> /opt/a.txt [root@oldboy opt]# rm -rf a.txt [root@oldboy opt]# ll a3* lrwxrwxrwx 1 root root 10 Mar 25 22:32 a3_softl -> /opt/a.txt # 变红
软链接的应用场景
1)软件升级
2)代码发布
3)不方便移动的目录
4)数据回滚
5)程序读取
硬链接
1)硬连接文件和元数据文件inode号相同并指向统一block
[root@oldboy opt]# touch a.txt [root@oldboy opt]# ln a.txt a_hardl [root@oldboy opt]# ll -i total 0 16782001 -rw-r--r-- 2 root root 0 Mar 25 22:47 a_hardl 16782001 -rw-r--r-- 2 root root 0 Mar 25 22:47 a.txt
2)删除源文件对硬连接没有影响,硬连接有备份的作用
[root@oldboy opt]# echo 123tt >a_hardl [root@oldboy opt]# ll total 8 -rw-r--r-- 2 root root 6 Mar 25 22:49 a_hardl -rw-r--r-- 2 root root 6 Mar 25 22:49 a.txt [root@oldboy opt]# cat a_hardl 123tt [root@oldboy opt]# cat a.txt 123tt [root@oldboy opt]# echo bbb >> a.txt [root@oldboy opt]# cat a.txt 123tt bbb [root@oldboy opt]# cat a_hardl 123tt bbb [root@oldboy opt]# rm -fr a.txt [root@oldboy opt]# cat a_hardl 123tt bbb
3)目录无法创建硬链接
[root@oldboy opt]# ln /opt/ /aaa ln: ‘/opt/’: hard link not allowed for directory
硬链接和软链接的区别
# 1. 创建命令不同 硬链接: ln 软链接: ln -s # 2. 目录无法创建硬链接,可以创建软链接,硬链接不能跨系统的分区,软链接可以 [root@oldboy ~]# ln /opt/a_hardl /boot/ ln: failed to create hard link ‘/boot/a_hardl’ => ‘/opt/a_hardl’: Invalid cross-device link # 3. 硬链接文件与源文件的inode号相同,软链接不同 # 4. 软链接如果删除源文件,所有软链接文件失效,硬链接如果删除源文件,其他硬链接文件均可以使用