linux文件相关简介

简介

目前的大部分 Linux 文件系统都默认采用 ext4 文件系统,Linux的文件系统分层结构采用FHS标准,具体详解http://www.pathname.com/fhs/,文件和目录被组织成一个单根倒置树结构,标准目录结构见下图。
linux文件相关简介_第1张图片

文件类型

Linux下的文件类型主要有以下几种类型:

- 普通文件
d 目录文件
b 块设备
c 字符设备
l 链接文件
p 管道文件
s 套接字文件

文件通配符

文件通配符可以匹配符合条件的现有文件,常见通配符如下所示:

* 零个或多个字符,但不匹配隐藏文件
? 任何单个字符
~ 当前用户家目录
~XX XX用户家目录
[0-9] 匹配数字0-9中的某一个字符
[a-z] 
[A-Z]
[hello] 匹配列表中的任何一个字符
[^hello] 匹配列表中所有字符以外的任何一个字符

删除某一文件夹下的所有文件
rm -rf * .[^.]*

文件元数据和节点表结构

文件的属性信息,例如文件的大小、时间、类型等,称为文件的元数据(meta data)。
这些数据存放在node表中,第一个node表记录对应保存了如下信息:

inode number 节点编号
文件类型
权限
UID
GID
链接数 (执行该文件的名称个数)
文件大小和不同时间戳
指向磁盘上文件的数据块指针
有关文件的其他数据

第一条记录如图所示:
linux文件相关简介_第2张图片
一个目录的内容是目录下的文件名和文件inode号的对应关系。

cp命令:

  • 分配一个空闲的inode号,在inode表中生成新条目;
  • 在目录中创建一个目录项,将名称与inode编号关联;
  • 拷贝数据生成新的文件;

rm和node

  • 链接数递减,当链接数减为0时,把数据块放到空闲列表中;
  • 删除目录项(文件名和inode号的关联关系);
  • 数据实际上不会马上被删除,但当另一个文件使用数据块时将被覆盖;

立即删除大文件范例:

cat/dev/null > /var/log/bigfile
mv和node
  • 如果mv的源文件和目标文件在相同分区,则用新的文件名创建新的目录项,inode号不变;
  • 删除旧的文件名;
  • 不影响inode表(除时间戳)或磁盘上的数据;

不在同一分区:相当于cp和rm

硬链接与软链接

硬链接

硬链接本质上就是给文件起一个新名称,实质上是同一个文件;具有相同的inode号,并且会增加该文件的链接数。

格式:
ln filename [linkname]

当rm删除文件时,链接数递减,当链接数为0时,文件被标记为删除;

软链接/符号链接

软连接文件本质上和原文件不是同一个文件;

格式:
ln -s filename [linkname]
软连接特点:
  1. 一个软连接的内容是它引用文件的名称;
  2. 指向的是另一个文件的路径,其大小为指向的路径字符串的长度;
  3. 不会增加引用文件inode的引用计数;
  4. 软连接如果使用相对路径,是相对于原文件的路径,不是相对于当前目录的路径;

软链接和硬链接的区别

本质 跨设备 inode 链接数 文件夹 文件类型
硬链接 同一文件 不支持 相同 创建会增加,删除会减少 不支持 与源文件相同
软链接 不同文件 支持 不同 不会变化 支持 链接文件,与源文件不同

你可能感兴趣的:(linux文件系统软链接)