第4章:档案系统结构介绍

前言

从上一章节,我们学会了基本的登入与登出桌面环境,以及如何将终端机从桌面环境进行打开,还有基本的几个指令的介绍与使用,接下来,继续介绍作业系统上的基础。本章节,要来介绍档案系统,来看看Linux之档案系统的结构,并期许看玩了这个章节,能够知道与描述Linux档案系统的结构以及档案与目录的基本操作。

档案系统阶层式架构

档案系统架构

从上面的图来看,就是Linux档案系统的架构,最上面都会从根(/)档案系统,也是就是root开始,往下以阶层的方式扩展下去,里面有几个重要的档案系统目录整理在下面的清单:

  1. /usr目录:这个目录会包含安装的套件软件、共享之系统函式库、函式库需要引入之档案以及一些唯读之程序档案,通常这个目录也包含一些指令的二进位之执行档,下面列出几个重要的子目录:
  • /usr/bin目录:里面存放了很多使用者可以使用的指令执行档。
  • /usr/sbin目录:这个子目录存放了一些系统管理员可以使用的指令,通常要有最高使用者权限root才可以执行成功的指令。
  • /usr/local目录:存放一些在本地端所设定的软件或是相关套件。
  • /usr/lib与/usr/lib64目录:这些都是存放系统共享C或C++程序之函式库,通常都是开发作业统或是C/C++程序会用到。
  • /lib与/lib64目录,这两个目录都是软连结,分别指向/usr/lib与/lib64目录。
  1. /etc目录:里面存放了很多系统上相关的软件套件或是指令所需要用到的设定档案。
  2. /var目录:里面存放着参数档案,这些参数档案时常会动态的异动,像是储存资料库之档案、快取档案、系统之档案日志(log)、列印多工缓冲处理器(printer-spooler service)以及网页的内容预设存放的目录等。
  3. /run目录:执行期的档案资料都会存放在这里,一直到下一此机器重新开机都会存在,在这目录中,包含了process id,即系统程序id编号,还有锁定的档案,而/var/run是一个软连结指向到/run以及/var/lock目录会指向到/run/lock目录。
  4. /home目录:这个目录底下会有一般使用者为名称命名的目录,意思就是每个使用者自己之家目录会在这个目录底下。
  5. /root目录:这个目录是系统最高权限使用者—root之家目录。
  6. /tmp目录:这个目录是一个存放暂存档的目录,如果里面的档案或是目录在10天都没有被更动过,则就会被系统自动删除,而在/var/tmp也是一个暂存的目录,不过里面的档案或是目录是在30天都没有被更动过,才会系统自动删除。
  7. /boot目录:这个目录是为了要启动作业系统而存在的,里面放了像是GRUB选单等启动作业系统需要用到的档案与目录。
  8. /dev目录:这个目录包含了装置,每一个档案会对应到一个装置,里面显示的装置就是作业系统正在存取的硬体,像是硬碟、光碟机等。

其中,/dev、/run、/proc与/sys都是特别的目录,不要将档案放在这些目录底下,原因是这些目录会放置Kernel至存档案的地方而且这四个目录会对应到一个记忆体之空间。

透过名称指定一个档案

指定一个档案可以透过两种方式来完成,一种叫做绝对路径,一种叫做相对路径。绝对路径指的是:从根目录开始,直接指定到档案的路径位址,像是使用者存的密码档案之绝对路径就会以:/etc/passwd来表示。路径之间的隔开会用斜线(slash),相对路径就是不是从根目录开始指定一个路径,可能是从某个当前目录开始指定一个档案路径,什麽意思呢?可以看看下面这个例子:

[rockylinux@workstation ~]$ ls /etc/passwd
/etc/passwd
[rockylinux@workstation ~]$ ls ../
rockylinux
[rockylinux@workstation ~]$

ls指令是一个可以查看目录或是档案的指令,第一个指令,毫无疑问的是一个绝对路径的例子,那第二个指令是什麽意思呢?指的是从当前目录去察看上一层目录下的档案与目录,因为当前目录是使用者的家目录,上一层就是/home目录,因此就会显示出所有使用者的目录了,所以从这边可以知道,./指的是当前目录,而../指的是上一层目录。

与目录相关的指令

这边介绍几个观看目录会用到的指令。首先,pwd这个指令会显示出当前目录的完整名称,指令的执行方式与输出如下:

[rockylinux@workstation ~]$ pwd
/home/rockylinux
[rockylinux@workstation ~]$

ls指令是列出指定目录下之档案与目录,执行指令方式与输出的结果如下:

[rockylinux@workstation ~]$ ls
Desktop  Documents  Downloads  Music  Pictures  Public  Templates  Videos
[rockylinux@workstation ~]$

cd指令是可以切换到某个目录底下,相关的执行指令方式与输出的结果如下:

[rockylinux@workstation ~]$ cd Music/
[rockylinux@workstation Music]$ cd /home/rockylinux/Videos
[rockylinux@workstation Videos]$

从上面输出的指令结果可以看到,cd指令可以接的目录可以是绝对路径,也可以是相对路径,而同样的,ls後面接要查看的目录位置也可以允许相对与绝对路径,若cd指令没有接任何的参数,则执行之後会切换到当前使用者的家目录。

若要输出更多每个档案与目录更多的资讯,像是每个档案存取权限的资讯、拥有者、修改时间日期或是隐藏档案,可以使用-a-l这两个选项来做到,可以把选项合在一起变成-al,就会变成下面这样:

[rockylinux@workstation ~]$ ls -al
total 32
drwx------. 15 rockylinux rockylinux 4096 Sep 19 20:38 .
drwxr-xr-x.  3 root       root         24 Sep 18 00:05 ..
-rw-------.  1 rockylinux rockylinux  453 Sep 19 23:13 .bash_history
-rw-r--r--.  1 rockylinux rockylinux   18 Jun 17 07:42 .bash_logout
-rw-r--r--.  1 rockylinux rockylinux  141 Jun 17 07:42 .bash_profile
-rw-r--r--.  1 rockylinux rockylinux  376 Jun 17 07:42 .bashrc
drwxr-xr-x. 10 rockylinux rockylinux  238 Sep 18 00:05 .cache
drwx------. 11 rockylinux rockylinux  215 Sep 18 00:05 .config
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Desktop
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Documents
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Downloads
-rw-------.  1 rockylinux rockylinux   16 Sep 18 00:05 .esd_auth
-rw-------.  1 rockylinux rockylinux 1550 Sep 19 20:31 .ICEauthority
drwxr-xr-x.  3 rockylinux rockylinux   19 Sep 18 00:05 .local
drwxr-xr-x.  4 rockylinux rockylinux   39 Sep 17 23:33 .mozilla
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Music
drwxr-xr-x.  2 rockylinux rockylinux 4096 Sep 19 20:58 Pictures
drwxrw----.  3 rockylinux rockylinux   19 Sep 18 00:05 .pki
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Public
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Templates
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Videos

上述的档案资讯说明如下:

  1. drwx------.为例,第一个字元d指的是目录的意思,而如果是-则指的是一般档案,若是l的话则是soft-link,而bc则是设备档,而s是Unix domain socket档,而p指的是pipeline档,後面的有rwx则会在後面提到,这边只需要了解代表的是使用者权限的意思,最後一个字元是.的话,则是一般的档案权限,若是+的话,指的是ACL档案权限,至於ACL档案权限介绍也会在後面章节中做详细的介绍。
  2. 若是.bash_history这样表示,则是一个隐藏档案。

若是只要印出指定路径所有的目录即可的话,则可以使用ls -ald做到,意思就是加上一个-d参数做到,相关的执行指令执行後的结果如下:

[rockylinux@workstation ~]$ ls -ald
drwx------. 15 rockylinux rockylinux 4096 Sep 19 20:38 .
[rockylinux@workstation ~]$

若要印出某个指定路径底下,所有子目录底下的路径的话,则可以使用-R来做到,相关执行後的结果如下:

[rockylinux@workstation ~]$ ls -alR /home/
/home/:
total 4
drwxr-xr-x.  3 root       root         24 Sep 18 00:05 .
dr-xr-xr-x. 17 root       root        224 Sep 17 23:34 ..
drwx------. 15 rockylinux rockylinux 4096 Sep 19 20:38 rockylinux

/home/rockylinux:
total 32
drwx------. 15 rockylinux rockylinux 4096 Sep 19 20:38 .
drwxr-xr-x.  3 root       root         24 Sep 18 00:05 ..
-rw-------.  1 rockylinux rockylinux  453 Sep 19 23:13 .bash_history
-rw-r--r--.  1 rockylinux rockylinux   18 Jun 17 07:42 .bash_logout
-rw-r--r--.  1 rockylinux rockylinux  141 Jun 17 07:42 .bash_profile
-rw-r--r--.  1 rockylinux rockylinux  376 Jun 17 07:42 .bashrc
drwxr-xr-x. 10 rockylinux rockylinux  238 Sep 18 00:05 .cache
drwx------. 11 rockylinux rockylinux  215 Sep 18 00:05 .config
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Desktop
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Documents
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Downloads
-rw-------.  1 rockylinux rockylinux   16 Sep 18 00:05 .esd_auth
-rw-------.  1 rockylinux rockylinux 1550 Sep 19 20:31 .ICEauthority
drwxr-xr-x.  3 rockylinux rockylinux   19 Sep 18 00:05 .local
drwxr-xr-x.  4 rockylinux rockylinux   39 Sep 17 23:33 .mozilla
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Music
drwxr-xr-x.  2 rockylinux rockylinux 4096 Sep 19 20:58 Pictures
drwxrw----.  3 rockylinux rockylinux   19 Sep 18 00:05 .pki
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Public
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Templates
drwxr-xr-x.  2 rockylinux rockylinux    6 Sep 18 00:05 Videos

/home/rockylinux/.cache:
total 20
drwxr-xr-x. 10 rockylinux rockylinux   238 Sep 18 00:05 .
drwx------. 15 rockylinux rockylinux  4096 Sep 19 20:38 ..
-rw-r--r--.  1 rockylinux rockylinux 12288 Sep 19 20:31 event-sound-cache.tdb.efa711973c694923969a64fd32220e6d.x86_64-redhat-linux-gnu
drwx------.  8 rockylinux rockylinux    94 Sep 18 00:05 evolution
drwxr-xr-x.  3 rockylinux rockylinux    26 Sep 18 00:05 flatpak
drwxr-xr-x.  7 rockylinux rockylinux   114 Sep 18 02:26 gnome-software
drwxrwxr-x.  2 rockylinux rockylinux    33 Sep 18 00:05 gstreamer-1.0
drwx------.  2 rockylinux rockylinux     6 Sep 18 00:05 libgweather
drwxr-xr-x. 51 rockylinux rockylinux  4096 Sep 19 20:54 mesa_shader_cache
drwxr-xr-x.  2 rockylinux rockylinux   229 Sep 19 20:31 tracker
drwx------.  4 rockylinux rockylinux    45 Sep 18 00:05 yelp

/home/rockylinux/.cache/evolution:
total 0
drwx------.  8 rockylinux rockylinux  94 Sep 18 00:05 .
drwxr-xr-x. 10 rockylinux rockylinux 238 Sep 18 00:05 ..
drwxr-xr-x.  3 rockylinux rockylinux  19 Sep 18 00:05 addressbook
drwxr-xr-x.  3 rockylinux rockylinux  19 Sep 18 00:05 calendar
drwxr-xr-x.  3 rockylinux rockylinux  19 Sep 18 00:05 mail
drwxr-xr-x.  3 rockylinux rockylinux  19 Sep 18 00:05 memos
drwxr-xr-x.  3 rockylinux rockylinux  19 Sep 18 00:05 sources
drwxr-xr-x.  3 rockylinux rockylinux  19 Sep 18 00:05 tasks

/home/rockylinux/.cache/evolution/addressbook:
total 0
drwxr-xr-x. 3 rockylinux rockylinux 19 Sep 18 00:05 .
drwx------. 8 rockylinux rockylinux 94 Sep 18 00:05 ..
drwxr-xr-x. 2 rockylinux rockylinux  6 Sep 18 00:05 trash

/home/rockylinux/.cache/evolution/addressbook/trash:
total 0
drwxr-xr-x. 2 rockylinux rockylinux  6 Sep 18 00:05 .
drwxr-xr-x. 3 rockylinux rockylinux 19 Sep 18 00:05 ..

/home/rockylinux/.cache/evolution/calendar:
total 0
drwxr-xr-x. 3 rockylinux rockylinux 19 Sep 18 00:05 .
drwx------. 8 rockylinux rockylinux 94 Sep 18 00:05 ..
drwxr-xr-x. 2 rockylinux rockylinux  6 Sep 18 00:05 trash

/home/rockylinux/.cache/evolution/calendar/trash:
total 0
drwxr-xr-x. 2 rockylinux rockylinux  6 Sep 18 00:05 .
drwxr-xr-x. 3 rockylinux rockylinux 19 Sep 18 00:05 ..

/home/rockylinux/.cache/evolution/mail:
total 0
drwxr-xr-x. 3 rockylinux rockylinux 19 Sep 18 00:05 .
drwx------. 8 rockylinux rockylinux 94 Sep 18 00:05 ..
drwxr-xr-x. 2 rockylinux rockylinux  6 Sep 18 00:05 trash

......

新建档案

若要新建立一个档案,则可以使用touch指令来做到,例如:假设要在当前的使用者目录建立一个档案的话,则可以使用:touch file1来做到,相关的输出指令结果如下:

[rockylinux@workstation ~]$ touch file1
[rockylinux@workstation ~]$ ls
Desktop  Documents  Downloads  file1  Music  Pictures  Public  Templates  Videos

常见档案与目录操作

这边列出几个常见的档案与目录的操作,相关的操作如下列表:

  1. mkdir directory:这个mkdir指令指的是新增一个目录,後面可以接的是要新增目录的名称。
  2. mkdir -p directory1/directory2,多了-p参数则会在建立目录的时候,若directory1不存在的话,则会先建立,接着再建立directory2
  3. cp file new_file:这个cp指令指的是复制一个档案并为复制的档案取一个新的档案名称。
  4. cp -r directory new_dirctory,这个cp指令搭配了-r参数,则是将一个目录包含底下所有的目录与档案整个复制到一个取名的目的目录名称。
  5. mv file new_file,这个mv指令就是将档案重新命名成另一个档案名称,而用在目录则是将目录重新命名。
  6. rm filerm这个指令就是将指定的档案给删除。
  7. rm -i file,加上-i指令则是互动式方式询问是否要删除这个档案,给使用者作最後一次地确认。
  8. rm -r directory,这个指令就是将某个目录给删除,不管目录是不是空的,都可以将指定的目录给删除掉
  9. rm -rf directory,这个指令也是将指定的目录删除,但是比上面指令多了一个-f参数,这个参数指的是,因为有时候档案或是目录可能不存在,而-f则是忽略那些档案或是目录,一律就是强制的删除而且不会有任何的互动的询问。
  10. rmdir directory,这个指令是将空的目录删除,若目录底下不是空的,则会无法删除。

建立档案捷径

档案捷径分成:soft links与hard links,所谓的hard links,中文会叫做硬连结,指的是有两个档案会指向同一个inode,inode会储存档案物件与属性,hard links并不会暂额外的空间,但是无法跨越装置与分割的磁碟空间,通常是用在磁碟空间有限的地方,像是嵌入系统的环境。使用-i参数在执行ls指令的时候,则会可以印出指定的档案之inode编号是多少,相关的指令之输出结果如下:

[rockylinux@workstation ~]$ ls -i file1
1495446 file1

soft links又是什麽呢?中文会叫做软连结,则没有hard links之限制,能够跨装置或是磁碟分割区路径来做到连结,但是建立连结的同时,则会占额外空间给建立连结的档案,那要怎麽建立hard links与soft links呢?可以使用ln来做到,相关的执行方法如下:

[rockylinux@workstation ~]$ ln file1 file2_hard
[rockylinux@workstation ~]$ ls -i file1 file2_hard
1495446 file1  1495446 file2_hard

若只用ln没有加其他参数,只有加上档案与被建立连结档案名称的话,则会建立成hard links,而使用ls -i指令则可以知道,这两个档案之inode编号是一样的,若要建立的是soft links,则可以使用下列的方法:

[rockylinux@workstation ~]$ ln -s file1 file2_soft
[rockylinux@workstation ~]$ ls -i file1 file2_soft
1495446 file1  2242910 file2_soft
[rockylinux@workstation ~]$
[rockylinux@workstation ~]$

从上面输出的结果可以得知,建立的soft link之档案是单独的一个档案,因为使用的inode编号是不同的,那删除呢?我们试着将档案删除之後,接着再执行上述查看档案相关的连结之间的指令,则会看到下列的结果:

[rockylinux@workstation ~]$ rm file1
[rockylinux@workstation ~]$ ls -al file2_hard
-rw-rw-r--. 1 rockylinux rockylinux 0 Sep 21 01:17 file2_hard
[rockylinux@workstation ~]$
[rockylinux@workstation ~]$ ls -al file2_soft
lrwxrwxrwx. 1 rockylinux rockylinux 5 Sep 21 01:45 file2_soft -> file1

最後一个若在画面上会显示红色的警告,表示soft link之连结已经失效,但是hard link之档案不会有任何的影响,其档案仍能够存取,相关的结果如下所示:

[rockylinux@workstation ~]$ rm file1
[rockylinux@workstation ~]$ cat file2_hard
test
123
[rockylinux@workstation ~]$ cat file2_soft
cat: file2_soft: No such file or directory

课後练习

开启workstation之虚拟主机,并以rockylinux之使用者登入,密码为:rocky,依序完成下列的操作:

  1. 使用ls指令来查看当前使用者目录底下所有档案属性等资讯
  2. 用一个指令输出当前的绝对路径
  3. 在当前使用者家目录底下建立一个多重的目录:directory1/sub_directory,请以一行指令完成
  4. 建立一个空白的文字档案叫做:test_file1
  5. 将上述的test_file1使用指令建立一个soft link,soft link名称为:test_file1_soft
  6. 请以一行指令将directory1删除
  7. 使用指令将test_file1删除并使用ls指令观察test_file1_soft之状态
  8. 使用指令将test_file1_soft删除

<<:  创建App後半部界面

>>:  day5_Windows,Linux, MacOs 与 arm 的支援度和 x86 的差异

Day0 前言+碎念(可跳过

嗨~大家好!! 我是饿麟,你们也可以叫我小饿 今天是铁人赛开赛的第1天 身为一个小白,我正思考着也许...

[Java Day23] 5.3. 封装

教材网址 https://coding104.blogspot.com/2021/06/java-e...

[Day 11]在你顺利的时候来一拳才是标配(前端篇)

挑战目标: MockNative Camp 今天来看一下在各种页面中是否有遗漏教师的栏位 这边整理一...

D-04-开始测试 ? mstest ? specflow

撰写测试 相信很多人会想要增加系统的稳定度,但是这该如何做则是个问题,相信很多人看过91 TDD的文...

运行系统档案检查工具以修复Windows 10中损坏的档案

您所使用的Windows 10是否经常崩溃?您是否在Windows 10中收到档案丢失或损坏的错误?...