Linux学习记录--文件系统简单操作
文件系统简单操作
磁盘的容量查看df
目录的容量查看du
连接文件ln
磁盘的容量查看(df)
语法:df[-ahikhtm] 目录或文件名
选项与参数:
-a:列出所有的文件系统,包括系统特有的proc等文件系统
-k:以KB为单位显示
-m:以MB为单位显示
-h:以GB,MB,KB等格式显示
-H:以M=1000K 代替M=1024K显示
-T:连同该分区的文件系统名称一起列出
-i:以inode的数量来显示
举例:
[root@localhost ~]# df -hT 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/sda2 ext3 9.5G 4.2G 4.9G 47% / /dev/sda3 ext3 4.8G 138M 4.4G 4% /home /dev/sda1 ext3 99M 12M 83M 13% /boot tmpfs tmpfs 1014M 0 1014M 0% /dev/shm /dev/sda6 ext3 1.9G 42M 1.8G 3% /mnt/sda6 .host:/ vmhgfs 77G 57G 21G 74% /mnt/hgfs [root@localhost ~]# df -ihT 文件系统 类型 Inode (I)已用 (I)可用 (I)已用% 挂载点 /dev/sda2 ext3 2.5M 168K 2.3M 7% / /dev/sda3 ext3 1.3M 22 1.3M 1% /home /dev/sda1 ext3 26K 35 26K 1% /boot tmpfs tmpfs 219K 1 219K 1% /dev/shm /dev/sda6 ext3 247K 11 247K 1% /mnt/sda6 .host:/ vmhgfs 0 0 0 - /mnt/hgfs
目录的容量查看(du)
语法:du[-ahskm] 目录或文件名
选项与参数:
-a:列出所有文件与目录容量
-h:以G/M容量格式显示
-s:列出总量,不在列出目录下面文件量
-S:不包括子目录下的统计()
-k:以KB为单位显示
-m: 以MB为单位显示
举例:
[root@localhost ~]# du 8 /bin 6 /boot 1 /dev … 216 /tmp 4077 /usr 99 /var [root@localhost ~]#
连接文件ln
语法:ln [-sf]源文件 目标文件
选项与参数:
-s:如果不加任何参数默认是hardlink ,加上-s 是symboliclink
-f:如果目标文件存在,就主动将目标文件删除后创建
Hard link(硬连接)
Hard link只是在某个目录下新建一个文件名连接到某个inode上
说明:
1. 创建文件F1,文件系统为其分配一个INODE(F1I)和若干IBLOCK, 此时连接到INODE(F1I)只有F1因此INODE(F1I)连接数为1
[root@localhost ~]# touch f1 [root@localhost ~]# ll -i f1 846433 -rw-r--r-- 1 root root 0 02-24 09:33 f1
2. 创建F1的Hard Link FH1, Hard link并不会分配新的INODE和 IBLOCK,只是将文件名连接都F1的INode上
[root@localhost ~]# ln f1 fh1 [root@localhost ~]# ll -i f1 fh1 846433 -rw-r--r-- 2 root root 0 02-24 09:33 f1 846433 -rw-r--r-- 2 root root 0 02-24 09:33 fh1
可以看到inode有1变成了2,INODE所指向的文件现在是f1,fh1,指向的数据还是以前的那份iblock
硬连接的好处:
1.不会创建新的INODE和iblock
2.硬连接文件或源文件删除不会影响其他(删除只是接触inode与文件的连接关系,猜想只要连接数不为0,就不会删除)
Symbolic link
symbolic link创建的文件时一个独立的新文件会占用一个新的INODE和若干iblock
说明:
1. 创建文件F2,文件系统为其分配一个INODE(F2I)和若干IBLOCK, 此时连接到INODE(F2I)只有F1因此INODE(F2I)连接数为1
[root@localhost ~]# touch f2 [root@localhost ~]# ll -i f2 846434 -rw-r--r-- 1 root root 0 02-24 09:49 f2
2. 创建F2的符号文件F2S, 文件系统会分配一个新的INODE(F2SI)和若干IBLOCK给F2S
[root@localhost ~]# ln -s f2 f2s [root@localhost ~]# ll -i f2 f2s 846434 -rw-r--r-- 1 root root 0 02-24 09:49 f2 846435 lrwxrwxrwx 1 root root 2 02-24 09:51 f2s -> f2
可以看到f2,f2S的INODE不是同一个,并且连接数都是1.说明他们是不同的独立文件,但是f2S对f2进行符号链接的呢?原因就是f2s的iblock其大小为2,记录就是f2的文件名。因此可以这样理解,\
1. f2s对应的INODE(F2SI)记录了iblock编号
2. iblock里记录了F2的文件名
3. 通过F2的文件名就可以找到F2对应的INODE和iblock
所以加入我们删除了F2 那么F2S就无法再开启,印在F2S需要去讯在F2这个文件,此时已经被删除了
[root@localhost ~]# rm -f f2 [root@localhost ~]# cat f2s cat: f2s: 没有那个文件或目录
目录的连接数量
当我们创建一个目录是默认会在这个目录下创建两个隐藏文件“.与..” 其中.指的是本层目录..指的是上层目录
[root@localhost ~]# ll -id /tmp 745569 drwxrwxrwt 26 root root 409 [root@localhost ~]# cd /tmp [root@localhost tmp]# mkdir newdir [root@localhost tmp]# ll -id /tmp /tmp/newdir 745569 drwxrwxrwt 27 root root 4096 02-24 10:05 /tmp 1008319 drwxr-xr-x 2 root root 4096 02-24 10:05 /tmp/newdir
由上面可以看出
1. 在未创建newdir是,tmp文件夹对应INODE的连接数26
2. 当创建newdir后,系统默认创建“.与..”文件,一个指向自己,一个指向上一层(/tmp)
3. “.与..”文件都是以硬链接的方式连接,因此可以看到此时,tmp文件夹对应INODE连接数27,newdir的连接数为2(一个是newdir连接,一个是“.”连接)