欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Linux文件系统

程序员文章站 2022-06-03 09:38:14
...

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...
相关标签: Linux基础