Linux文件系统
Linux的文件系统:
根文件系统(rootfs):
root filesystem
LSB,FHS(Filesystem Heirache Standrd)
/etc,/usr,/var,/root,/home,/dev
/boot:引导文件存放目录,内核文件(vmlinuz)、引导加载器(bootloader,grub)都存放于此目录;
/bin:供所有用户使用的基本命令:不能关联至独立分区,OS启动即会用到的程序;
/sbin:管理类的基本命令,不能关联至独立分 区,OS启动即会用到的程序;
/lib:基于共享库文件,以及内核模块文件(/lib/modules);
/lib64:专用于x86_64系统上的辅助共享库文件存放位置;
/etc:配置文件目录(纯文本文件);
/home/USERNAME:普通用户家目录;
/root:管理员的家目录;
/media:便携式移动设备挂载点;
cdrom
usb
/mnt:临时文件系统挂载点;
/dev:设备文件及特殊文件存储位置;
b:block device,随机访问
c:character device,线性访问
/opt:第三方应用程序的安装位置;
/srv:系统上运行的服务用到的数据;
/tmp:临时文件存储位置;
/usr:universal shared,read-only data;
bin:保证系统拥有完整功能而提供的应用程序;
sbin:
lib:
lib64:
include:C程序的头文件(header files);
share:结构化独立的数据,例如doc,man等
local:第三方应用程序的安装位置;
bin,sbin,lib,lib64,shared
/var:variable data files
cache:应用程序缓存数据目录;
lib:应用程序状态信息;
local:专用于为/usr/local下的应用程序存储可变数据;
lock:锁文件;
log:日志目录及文件;
opt:专用于为/opt下的应用程序存储可变数据;
run:运行中的进程相关的数据:通常用于存储进程的pid文件;
spool:应用程序数据池;
tmp:保存系统两次重启之间产生的临时数据;
/proc:用于输出内核与进程信息相关的虚拟文件系统;
/sys:用于输出当前系统上硬件设备相关信息的虚拟文件系统;
/selinux:security enhanced Linux.selinux相关的安全策略等信息的存储位置;
Linux的应用程序的组成部分:
二进制程序:/bin,/sbin,/usr/bin,/usr/sbin
库文件:/lib,/lib64
配置文件:/etc,/etc/DIRECTORY,/usr/local/etc
帮助文件:/usr/share/man,/usr/share/doc
bash的基础特性:
(1)历史命令
history
环境变量:
HISTSIZE:命令历史记录的条数;
HISTFILE:~/.bash_history;
HISTFILESIZE:命令历史文件记录历史的条数;
history -d OFFSET 清除某条历史命令
-c 全部清除
history #:显示历史中最近的#条命令;
-a:手动追加当前会话缓冲区的命令历史至历史文件中;
调用历史中的命令:
!#重复执行第#条命令;
!!:执行上一条命令
!string 执行含有该字符串的命令
调用上一条命令的最后一个参数:
!$:
控制命令历史的记录方式:
环境变量: HISTCONTROL
ignoredups:忽略重复的命令:连续且相同为“重复”;
ignorespace:忽略所有以空白开头的命令;
ignoreboth:以上两个都生效
修改环境变量值的方式:export 变量名 =“值”
环境变量只对当前shell有效,退出后就没有了
文件系统上的其他概念:
Inode:索引节点 描述文件元数据
理解inode,要从文件储存说起。
文件储存在硬盘上,硬盘的最小存储单位叫做"扇区"(Sector)。每个扇区储存512字节(相当于0.5KB)。
操作系统读取硬盘的时候,不会一个个扇区地读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个"块"(block)。这种由多个扇区组成的"块",是文件存取的最小单位。"块"的大小,最常见的是4KB,即连续八个sector组成一个 block。
文件数据都储存在"块"中,那么很显然,我们还必须找到一个地方储存文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种储存文件元信息的区域就叫做inode,中文译名为"索引节点"。
这里值得重复一遍,Unix/Linux系统内部不使用文件名,而使用inode号码来识别文件。对于系统来说,文件名只是inode号码便于识别的别称或者绰号。表面上,用户通过文件名,打开文件。
实际上,系统内部这个过程分成三步:首先,系统找到这个文件名对应的inode号码;其次,通过inode号码,获取inode信息;最后,根据inode信息,找到文件数据所在的block,读出数据。
链接文件:
硬链接:
不能够对目录进行;
不能跨分区;(硬链接是将文件都指向同一个inode,inode不可以跨分区,所以硬链接也不能跨分区)
指向同一个inode的多个不同路径:创建文件的硬链接即为为inode创建新的引用路径,因此会增加其引用计数。
符号链接(软连接):
可以对目录进行;
可以跨分区;
指向的是另一个的文件路径,其大小为指向的路径字符串的长度,不增加或减少目标文件inode的引用计数。
Btrfs:文件系统
技术预览版
核心特性:
多物理卷支持:btrfs可由多个底层物理卷组成;支持RAID,以联机“添加、移除、修改”
写时复制更新机制(CoW):复制、更新及替换指针(会复制原文件,再复制后的文件上进行修改,防止修改错误无法回退);而非“就地”更新
数据及元数据校验码:checksum
子卷:sub_volume
快照:支持快照的快照(类似增量备份)
透明压缩:
文件系统创建:
mkfs.btrfa
-L ‘LABEL’
-d :raid0,raid1,raid5,raid6,raid10,single(指明数据存放方式,默认single)
-m :raid0,raid1,raid5,raid6,raid10,single,dup(放两份数据)(指明元数据存放方式,默认single)
-O (指明在格式化时就要支持的特性)
-O list-all: 列示支持的所有feature
属性查看:
#btrfs filesystem show
挂载文件系统:
#mount -t btrfs DEVICE 挂载点
透明压缩机制:(将文件进行自动压缩)
mount -o compress=(lzo|zlib) DEVICE 挂载点
移动设备时会自动将数据移除
子命令:filesystem,device,balance,subvolume
压缩、解压缩及归档工具
compress /uncompress: .Z
gzip/gunzip: .gz
bzip2/bunzip2: .bz2
xz/unxz: .xz
zip/unzip
tar,cpio
1.gzip/gunzip
gzip [OPTION]...FILE...
-d:解压缩,相当于gunzip
-c:将结果输出至标准输出(压缩、解压后保留原文件)
-#:1-9,指定压缩比(压缩比默认是6,压缩比越大,耗时越长)
zcat:不显示展开的前提下查看文本文件内容
2.bzip2/bunzip2(压缩算法更好)
bzip [OPTION]...FILE...
-d:解压缩
-k:keep,保留原文件
-#:1-9,指定压缩比(压缩比默认是6,压缩比越大,耗时越长)
bzcat:不显示展开的前提下查看文本文件内容
3.xz/unxz(压缩算法最好)
xz [OPTION]...FILE...
-d:解压缩
-k:keep,保留原文件
-#:1-9,指定压缩比(压缩比默认是6,压缩比越大,耗时越长)
xzcat:不显示展开的前提下查看文本文件内容
4.tar
tar [OPTION]...
(1)创建归档
tar -cf /PATH/TO/SOMEFILE.tar FILE...
(2)查看归档文件中的文件列表
tar -tf /PATH/TO/SOMEFILE.tar
(3)展开归档(指定展开路径)
tar -xf /PATH/TO/SOMEFILE.tar -C /PATH
(4)归档并压缩,展开不用加该参数
-j:bzip2, -z:gzip, -J:xz
tar -Jcf /PATH/TO/SOMEFILE.tar.xz FILE...
上一篇: Python3 系列之 环境包管理神器 pipenv
下一篇: ionic提示弹框