7、文件系统

在Linux 中 一切皆文件

文件系统无疑是最要的组件,用于组织和管理计算机存储设备上的大量文件,并提供用户交互接口。Linux同样具备完善的文件系统。 图形文件管理器 Nautilus 、功能强大的Shell文件系统管理工具

文件系统类型

Linux是一种兼容性很高的操作系统,支持的文件系统格式很多 ,大体分为几类:

  • 磁盘文件系统 : 指本地主机中实际可以访问到的文件系统,包括硬盘、CD-ROM、DVD、USB存储器、磁盘阵列等 ;常见文件系统格式;autofs、coda、Ext(Extended File System,扩展文件系统)、Ext3、Ext4、VFAT、ISO9660(通常是CD-ROM)、UFS(Unix File System,Unix文件系统)、ReiserFS、XFS、JFS、FAT(File Allocation Table,文件分配表)、FAT16、FAT32、NTFS(Techonology File System)等
  • *网络文件系统 :可以远程访问的文件系统,这种文件系统在服务器端仍是本地的磁盘文件系统,客户机通过网络远程访问数据。文件系统格式有:NFS(Network File System,网络文件系统)、 Samba(SMB/CIFS)(常用服务器)、AFP(Apple Filing Protocol,Apple文件归档协议)和WebDAV等;
  • 专有/虚拟文件系统:不驻留在磁盘上的文件系统,常见格式有:TMPFS(临时文件系统)、PROCFS(Process File System,进程文件系统)和LOOPBACKFS(Loopback File System,回送文件系统)

  • 目前Ext4是Linux系统广泛使用的一种文件格式。在Ext3基础上,对有效性保护数据完整性数据访问速度向下兼容等方面做了改进
  • 最大特点是日志文件系统 : 可将整个磁盘的写入动作完整地记录在磁盘的某个区域上,以便在必要时回溯追踪
  • FAT16、FAT32、NTFS是Microsoft Windows系统的主要的文件系统格式
  • Linux 系统同样可以很好的支持这些文件格式。不过以往版本的Linux系统需要单独挂载Windows文件系统,目前很多Linux可以自动识别这些文件格式,以制度方式访问计算机磁盘上Windows系统上的文件。

SCSI与IDE设备命名

dev 为设备文件目录

sata硬盘的设备名称是 “/dev/sda

  • /dev/sda1含义?
  • /dev/sda3含义?

IDE硬盘设备名称是 “/dev/hda

  • /dev/hdc2 含义?
如果很在意系统的高性能稳定性,应该使用SCSI硬盘

cat /proc/partitions

Linux分区的命名方式

字母数字结合

前两个字母表示设备类型

  • hd 代表IDE硬盘
  • sd 表示SCSI或SATA硬盘

第三个字母说明具体的设备

  • /dev/hda 表示第个IDE硬盘
  • /dev/hdb 表示第个IDE硬盘

交换分区

  • 将内存中的内容写入硬盘或硬盘中读出,称为内存交换(swapping)
  • 交换分区最小* 必须等于计算机内存
  • 可以创建多于一个的交换分区
  • 尽量把交互分区放在硬盘驱动器起始位置

文件系统结构

文件系统逻辑结构

  • Windows 将磁盘分区 A、B、C、D…
  • Linux 的文件组织模式犹如一颗倒置的树 。所有存储设备作为这棵树的一个子目录。存取文件只需要确定目录就可以了 ,无需考虑物理存储位置 。

分区与目录的关系

  • Windows下,目录结构属于分区 ; Linux下,分区属于目录结构

如何知道文件存储的具体硬盘位置?

  • Linux中将所有硬件都视为文件来处理。包括硬盘分区、CD-ROM、软盘以及其他USB移动设备等。为了能够统一的方式和方法访问文件资源,Linux中提供了对每种硬件设备相应的设备文件。一旦Linux系统可以访问到硬件,就将其上的文件系统挂载到目录树中的一个子目录中
  • 例如: 用户插入USB移动存储器 , Ubuntu Linux 自动识别后 ,将其挂载/media/disk目录下
    7、文件系统_第1张图片

目录说明

目录 说明
* /bin (/usr/bin 、 /usr/local/bin) 是Binary的缩写, 存放最经常使用的命令(可执行文件-二进制)
* /boot 存放Linux内核启动文件,包括一些连接文件以及镜像文件、Grub、lilo启动器程序
/dev 类似于windows的设备管理器,把所有的硬件用文件的形式存储。包括硬盘、分区、键盘、鼠标、USB、tty等
* /etc 所有的系统管理所需要的配置文件子目录 ,例如 passwd-用户账号信息、hostname-主机名
* /home 存放用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。
/initrd 存放启动时挂载initrd.img 映像文件目录 , 以及载入所需设备模块目录
/lib 系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
/lost+found 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件 ,存放fsck放置的零散文件
* /media linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。
* /mnt 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里的内容了. 临时挂载点
/opt 这是给主机额外安装软件所摆放的目录 , 作为可选文件程序的存放目录主要被第三方开发者用来简易的安装和卸载它们的软件包。如安装ORACLE数据库就可放到该目录下。
/proc 这个目录是一个虚拟的目录,它是系统内存的映射,访问这个目录来获取系统信息。存放所有标志位文件的进程,他们通过进程号或其他系统动态信息进行标识,例如:puinfo文件存放CPU当前动作状态的数据
* /root 该目录为系统管理员,也称作超级权限者的用户主目录
*/sbin (/usr/sbin 、 /usr/local/sbin) s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。包括系统管理目录查询关键命令文件
/srv service缩写,该目录存放一些服务启动之后需要提取的数据
/tmp 这个目录是用来存放一些临时文件的 ,所有用户对该目录都有读写权限
/sys 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs
* /usr/local 这是另一个给主机额外安装软件所安装的目录。一般是通过编译源码方式安装的程序。
*/var 这个目录中存放着在不断扩充着的东西,习惯将经常被修改的目录放在这个目录下。包括各种日志文件
/selinux [security-enhanced linux] 360 SELinux是一种安全子系统,它能控制程序只能访问特定文件。

常见目录 , 结合了centosUbuntu

子目录解释

一级目录 子目录 描述
/usr 用于存放用户直接有关的文件和目录,例如应用程序及支持它们的库文件。一般为重要目录
/usr/X11R6t XWindow系统
/usr/bin 用户和管理员的标准命令
/usr/include c/c++等各种开发编译环境的标准include文件
/usr/lib 应用程序已程序包的连接库
/usr/local 系统管理员安装的应用程序目录
/usr/local/share 系统管理员安装的共享文件
/usr/sbin 用户和管理员标准命令
/usr/share 存放使用手册等共享文件的目录
/usr/share/dict 存放码表的目录
/usr/share/man 系统使用手册
/usr/share/misc 一般数据
/share/sgml SGML数据
/usr/share/xml xmls数据
/var 通常由于存放长度可变的文件,例如日志文件和打印机文件
/var/cache 应用程序缓存目录
/var/crash 系统错误信息
/var/games 游戏数据
/var/lib 各种状态数据
/var/lock 文件锁定记录
/var/log 日志记录
/var/mail 电子邮件
/var/opt /opt目录的变量数据
/var/num 进程标识数据
/var/spool 存放电子邮件、答应任务等的队列目录
/var/tmp 临时文件目录

路径

绝对路径相对路径 , 两者关系是相对的

文件系统导航

目录导航

  • pwd : 显示绝对路径名 ~ 表示用户主目录

  • ls : 列出用户有权访问的任何目录

  • 语法格式: ls [-a |-A|-c|-F|-l|-L|-o|-r|-R|-t|-u] [filename|directory]

    选项 描述
    -a 包括隐藏文件
    -A 包括隐藏文件 但不列出 . …
    -c 按修改时间排序
    -F 目录后面标记 /,可执行文件*,符号链接@,管道后面|,socket文件=
    -l 以列表格式来显示文件的详细信息
    -L 若指定文件为一个符号链接文件 则显示链接所指向的文件
    -o 与-l相同,只是显示拥有者信息
    -r 字母逆序最早优先的顺序显示输出结果
    -R 递归的形式显示目录的各个子目录中的文件
    -t 按修改的时间心事输出结果
    -u 按文件上次存取的时间心事输出结果
    -h 文件大小按K、M、G为单位显示,与-l一起使用 , 例: ls -hl
  • 第一项由10个字符组成,例如 drwxr-xr-x说明了该文件目录的文件类型访问权限

  • 第一个字符表示文件类型

  • 从左起第二个字符到第10个字符表示文件访问权限,以3个字符为一组,分为三组,组中每个位置对应一个指定的权限,其顺序为读写执行

  • 三组字符又分别代表文件所有者权限文件从属组权限以及其他用户权限。三个字符组成一个2进制数 # 最高权限 777

文件类型

文件类型 类型符 描述
普通文件 - 值ASCII文本文件、二进制可执行文件、以及硬件链接
块设备文件 b 块输入/输出设备文件
字符设备文件 c 演示输入/输出设备文件,每次I/O操作仅传送一个字符
目录文件 d 包含若干文件或子目录
符号链接文件 l 只保留了文件地址,而不是文件本身
命令管道 p 一种进程间通信的机制,用于进程间通讯的暂时文件
套接字 s 用于进程间通信,两台计算机间通讯的应用程序接口(API)

文件和目录权限

权限类型 应用于目录 应用于任何其他类型的文件
读(r) 授权读取目录或子目录内容的权限 授予查看文件的权限
写(w) 授予创建、修改或删除文件或子目录的权限 授予写入权限,允许修改文件
执行(x) 授予进入目录的权限 允许用户运行程序
- 无权限 无权限

7、文件系统_第2张图片

cd

cd ../.. 返回

生产文件(目录)

  • 创建、复制、移动与删除文件
  • touch file cp mv rm

cp

  • 拷贝文件或目录
  • 语法格式: cp [-a|-d|-f|-i|-p|-r|-l|-v] [SOURCE] [DEST]

支持多文件操作 , 最少有对源文件的读取权限 读目标文件或目录有写入权限

选项 描述
-a 通常在拷贝目录时使用 ,保留连接、文件属性、并递归拷贝目录,其作用等于dpr选项组合
-d 拷贝时保留连接
-f 非交互模式的复制操作,覆盖已存在的目标文件而不提示
-i 交互模式的复制操作,与-f相反,在覆盖目标文件之前将给出提示
-p 除复制源文件内容外,还将其修改时间访问权限同时复制
-r 若源文件是目录,cp命令将递归的复制该目录下的所有子目录和文件
-l 不做拷贝,只是连接文件
-v 显示详细的复制过程

mv

  • 移动文件或目录改名
  • 语法: mv [-i|-f|-v] [SOURCE] [DEST]
选项 描述
-f 非交互模式的移动操作,覆盖已经存在的目标文件而不提示
-i 交互模式的移动操作 , 覆盖前会给出提示
-v 显示详细的移动过程

rm

  • 授权下 删除一个或多个文件/目录 , 对于链接紫杉醇链接,原文件保存不变
  • 语法: rm [-i|-f|-r|-v] [DEST]
选项 描述
-f 非交互模式的删除操作,忽略不存在的文件
-i 交互模式的删除操作 , 覆盖前会给出提示
-r 若源文件是目录,将递归的删除该目录下的所有子目录和文件
-v 显示详细的删除过程

rm命令执行物理删除,一旦一个文件被删除,就不能恢复

mkdir

  • 语法格式: mkdir [-p] directory_name
  • -p : 表示 级联创建

rmdir

  • 语法格式: rmdir [-p] directory_name
  • -p : 表示 级联删除

查看文件(内容)

cat

  • 语法格式: cat [-v|-T|-E|-u] filename
选项 描述
-v 用一种特殊形式显示控制字符 ,LFD与TAB除外
-T 将TAB显示为^l ,只与 -v 选项同时使用
-E 每行的末尾显示一个 $ 符 , 只与 -v 选项同时使用
-u 输出不经过缓冲区

echo

head

  • 用于显示文件或标准输入的前几行
  • 语法 : head [-num] filename

tail

  • 用于显示文件或标准输入的后几行
  • 语法 : head [+/-num] filename
  • +num:表示从第num行以后开始显示
  • -num:表示文件尾 num行处开始显示,默认末尾10行

连接文件

  • 类型 :
  • 硬链接是利用Linux中为每个文件分配物理编号——inode建立连接,因此硬链接不能跨文件系统
  • 软链接(符号链接)是利用文件的路径名建立链接。通常建立软连接使用绝对路径而不是相对路径,以最大限度增加可移植性

in

  • 创建文件的链接文件 ,类似于 快捷方式
  • 语法格式: in [-s] target link_name

    -s 表示为创建链接,缺省时 ,创建硬链接 , 链接可以是目录也可以是文件

压缩文件

压缩工具 解压工具 文件扩展名
gzip gunzip .gz
bzip2 bunzip2 .bz2
zip unzip .zip

gzip与gunzip

  • 语法格式: gzip [-l | -d| -num] filename
选项 描述
-l 查看压缩文件内的信息,包括文件数、大小、压缩比等参数,并不是进行文件压缩
-d 将文件解压,功能与gunzip相同
-num 指定压缩比率 , num为1~9个等级

在执行gzip命令后 , 它将删除的未压缩的文件并只保留已压缩的版本

  • 语法格式: gunzip [-f] file.gz

-f | 用于解压文件是,对同名文件不做提示
gunzip 与gzip相反

* tar

  • tar命令主要用于将若干文件或目录合并为一个文件,以便备份和压缩。当然,之后出现tar程序的改进版,可实现合并归档同时进行压缩
  • 语法格式 :tar [-t|-x|-c|-v|-f|-j|-z] tarfile filelist
选项 描述
-t 显示归档文件中的内容
-x 释放归档文件
-u 更新归档文件
-c 创建一个新的归档文件
-v 显示归档释放的过程信息
-f 用户指定归档文件的文件名,否则使用默认名称
-j 由tar生成归档 然后又bzip2压缩
-z 由tar生成归档 然后又gzip压缩

常用 tar -zxvf

  • 示例:
// 压缩
tar -cf  XXX        // 归档  
tar -cjf XXX.tar    // bzip2压缩
tar -czf XXX.tar    // gzip压缩
ls -lh              // 查看
// 解压
tar -xvf XXX.tar     // 查看归档文件中的详细内容
tar -zvjf XXX.tar.bz // 
tar -zvxf XXX.tar.gz // 

编辑文件

查看vi

你可能感兴趣的:(Linux)