鸟哥的Linux私房菜:2、Linux文件、目录与磁盘格式


第 5 章、Linux 的文件权限与目录配置


  • Linux 的每个文件中,可分别给予使用者、群组与其他人三种身份个别的 rwx 权限。

  • 群组最有用的功能之一,就是当你在团队开发资源的时候,且每个账号都可以有多个群组的支持。

  • 利用 ls-l 显示的文件属性中,第一个字段是文件的权限,共有十个位,第一个位是文件类型,接 下来三个为一组共三组,为使用者、群组、其他人的权限,权限有 r,w,x 三种。

  • 如果档名之前多一个「.」,则代表这个文件为「隐藏档」。

  • 若需要 root 的权限时,可以使用 su- 这个指令来切换身份。处理完毕则使用 exit 离开 su 的指令环境。

  • 更改文件的群组支持可用 chgrp,修改文件的拥有者可用 chown,修改文件的权限可用 chmod。

  • chmod 修改权限的方法有两种,分别是符号法与数字法,数字法中 r,w,x 分数为 4,2,1。

  • 对文件来讲,权限的效能为:
    r: 可读取此一文件的实际内容,如读取文本文件的文字内容等。
    w:可以编辑、新增或者是修改该文件的内容(但不含删除该文件)。
    x:该文件具有可以被系统执行的权限。

  • 对目录来说,权限的效能为:
    r (read contents in directory)
    w (modify contents of directory)
    x (access directory)

  • 要开放目录给任何人浏览时,应该至少也要给予 r 及 x 的权限,但 w 权限不可随便给。

  • 能否读取到某个文件内容,跟该文件所在的目录权限也有关系(目录至少需要有 x 的权限)。

  • Linux 档名的限制为:单一文件或目录的最大容许文件名为 255 个英文字符或 128 个汉字字符;

  • 根据 FHS 的官方文件指出,他们的主要目的是希望让使用者可以了解到已安装软件通常放置于那个目录下

  • FHS 订定出来的四种目录特色为: shareable, unshareable, static, variable 等四类;

  • FHS 所定义的三层主目录为: /, /var, /usr 三层而已;

  • 绝对路径文件名为从根目录 / 开始写起,否则都是相对路径的文件名。



第 6 章、Linux 文件与目录管理


绝对路径:「一定由根目录 / 写起」;相对路径:「不由 / 写起,而是由相对当前目录写起」。

特殊目录有: .,…,-,~, ~account 需要注意。

与目录相关的指令有: cd, mkdir, rmdir, pwd 等重要指令。

rmdir 仅能删除空目录,要删除非空目录需使用「rm-」指令。

用户能使用的指令是依据 PATH 变量所规定的目录去搜寻的。

ls 可以检视文件的属性,尤其 -d,-a,-l 等选项特别重要!

文件的复制、删除、移动可以分别使用: cp, m , mv 等指令来操作。

检查文件的内容(读文件)可使用的指令包括有: cat, tac, nl, more, less, head, tail, od 等。

cat -n 与nl 均可显示行号,但默认的情况下,空白行会不会编号并不相同。

touch 的目的在修改文件的时间参数,但亦可用来建立空文件。

一个文件记录的时间参数有 三种,分别是 access time(atime), status time (ctime ), modifcation time(mtime), ls 默认显示的是 mtime。

除了传统的 rwx 权限之外,在 Ext2/Ext3/Ext4/xfs 文件系统中,还可以使用 chattr 与 lsattr 设定及观察隐藏属性。常见的包括只能新增数据的 +a 与完全不能更动文件的 +i 属性。

新建文件 / 目录时,新文件的预设权限使用 umask 来规范。默认目录完全权限为 drwxrwxrwx,文件则为 -rw-rw-rw-。

文件具有 SUID 的特殊权限时,代表当用户执行此一 binary 程序时,在执行过程中用户会暂时具有程序拥有者的权限。

目录具有 SGID 的特殊权限时,代表用户在这个目录底下新建的文件之群组都会与该目录的组名相同。

目录具有 SBIT 的特殊权限时,代表在该目录下用户建立的文件只有自己与 root 能够删除!

观察文件的类型可以使用 file 指令来观察。

搜寻指令的完整文件名可用 which 或 type ,这两个指令都是透过 PATH 变量来搜寻文件名。

搜寻文件的完整档名可以使用 whereis 找特定目录或 locate 到数据库去搜寻,而不实际搜寻文件系统。

利用 find 可以加入许多选项来直接查询文件系统,以获得自己想要知道的档名。



第 7 章、Linux 磁盘与文件系统管理


  • 一个可以被挂载的数据通常称为「文件系统, filesystem」 而不是分区槽 (partition) 喔!

  • 基本上 Linux 的传统文件系统为 Ext2 ,该文件系统内的信息主要有:
    superblock:记录此 filesystem 的整体信息,包括 inode/block 的总量、使用量、剩余量, 以及文件系统的格式与相关信息等。
    inode:记录文件的属性,一个文件占用一个 inode,同时记录此文件的数据所在的 block 号码。
    block:实际记录文件的内容,若文件太大时,会占用多个 block 。

  • Ext2 文件系统的数据存取为索引式文件系统(indexed allocation)。

  • 需要碎片整理的原因就是文件写入的 block 太过于离散了,此时文件读取的效能将会变的很差所致。 这个时候可以透过碎片整理将同一个文件所属的 blocks 汇整在一起。

  • Ext2 文件系统主要有: boot sector, superblock, inode bitmap, block bitmap, inode table, data block 等六大部分。

  • data block 是用来放置文件内容数据地方,在 Ext2 文件系统中所支持的 block 大小有 1K,2K及4K三种而已。

  • inode记录文件的属性/权限等数据,其他重要项目为:每个 inode 大小均为固定,有 128/256bytes 两种基本容量。每个文件都仅会占用一个 inode 而已;因此文件 系统能够建立的文件数量与 inode 的数量有关。

  • 文件的 block 在记录文件的实际数据,目录的 block 则在记录该目录底下文件名与其 inode 号码的对照表。

  • 日志式文件系统(journal)会多出一块记录区,随时记载文件系统的主要活动,可加快系统复原时间。

  • Linux 文件系统为增加效能,会让主存储器作为大量的磁盘高速缓存。

  • 实体链接只是多了一个文件名对该 inode 号码的链接而已。

  • 符号链接就类似 Windows 的快捷方式功能。

  • 磁盘的使用必需要经过: 分区、格式化与挂载,分别惯用的指令为: gdisk, mkfs, mount 三个指令。

  • 分区时,应使用 parted 检查分区表格式,再判断使用 fdisk/gdisk 来分区,或直接使用 parted 分区。

  • 为了考虑效能,XFS 文件系统格式化时,可以考虑加上 agcount/su/sw/extsize 等参数较佳。

  • 如果磁盘已无未分区的容量,可以考虑使用大型文件取代磁盘装置的处理方式,透过 dd 与格式化功能。

  • 开机自动挂载可参考 /etc/fstab 之设定,设定完毕务必使用 mount -a 测试语法正确否。



第 8 章、文件与文件系统压缩


  • 压缩指令为透过一些运算方法去将原本的文件进行压缩,以减少文件所占用的磁盘容量。压缩前与压缩后的文件所占用的磁盘容量比值,就可 以被称为是压缩比」。

  • 压缩的好处是可以减少磁盘容量的浪费,在 WWW 网站也可以利用文件压缩的技术来进行数据的传送,好让网站带宽的可利用率上升喔。

  • 压缩文件案的扩展名大多是: [*.gz, *.bz2, *.xz, *.tar, *.tar.gz, *.tar.bz2, *.tar.xz」。

  • 常见的压缩指令有 gzip, bzip2, xZ。压缩率最佳的是 xz,若可以不计时间成本,建议使用 xz 进行压缩。

  • tar 可以用来进行文件打包,并可支持 gzip, bzip2, xz 的压缩。

  • 压缩: tar-Jcv -f filename.tar.xz 要被压缩的文件或目录名称。

  • 查询: tar-Jtv -f filename.tar.xz。

  • 解压缩: tar -Jxv -f filename.tar.xz -C欲解压缩的目录。

  • xfsdump 指令可备份文件系统或单一目录。

  • xfsdump 的备份若针对文件系统时,可进行 0-9 的 level 差异备份!其中 level0 为完整备份。

  • xfsrestore 指令可还原被 xfsdump 建置的备份档。

  • 要建立光盘刻录数据时,可透过 mkisofs 指令来建置。

  • 可透过 wodim 来写入 CD 或 DVD 刻录机。

  • dd 可备份完整的 partition 或 disk ,因为 dd 可读取磁盘的 sector 表面数据。

  • cpio 为相当优秀的备份指令,不过必须要搭配类似 find 指令来读入欲备份的文件名数据,方可进行备份动作。

猜你喜欢

转载自blog.csdn.net/qq_30534935/article/details/103476874