Skip to content
← 返回Linux列表
命令与系统观察

Linux:文件、目录与磁盘 · 识别磁盘、文件系统与文件属性至复制块数据、添加分区与创建文件系统 ​

返回分篇目录

Linux:文件、目录与磁盘 ​

识别磁盘、文件系统与文件属性 ​

先用 lsblk 看块设备,再用 blkid 和 df 确认文件系统及容量;文件属性与二进制格式检查分别见 lsattr、readelf。

lsblk(Linux) · 列出设备信息 ​

更多信息:https://manned.org/lsblk。

  • 以树状格式列出所有存储设备:
bash
lsblk
  • 同时列出空设备:
bash
lsblk {{[-a|--all]}}
  • 以字节为单位而不是以人类可读的格式打印 SIZE 列:
bash
lsblk {{[-b|--bytes]}}
  • 输出文件系统信息:
bash
lsblk {{[-f|--fs]}}
  • 使用 ASCII 字符进行树形格式化:
bash
lsblk {{[-i|--ascii]}}
  • 输出块设备的拓扑结构:
bash
lsblk {{[-t|--topology]}}
  • 排除由逗号分隔的主要设备编号列表指定的设备:
bash
lsblk {{[-e|--exclude]}} {{1,7,...}}
  • 使用逗号分隔的列列表显示自定义摘要:
bash
lsblk {{[-o|--output]}} {{名称,序列号,型号,传输方式,类型,大小,文件系统类型,挂载点,...}}

blkid(Linux) · 列出所有已识别的分区及其通用唯一标识符 (UUID) ​

更多信息:https://manned.org/blkid。

  • 列出所有分区:
bash
sudo blkid
  • 列出表中的所有分区,包括当前挂载点:
bash
sudo blkid -o list

df(Linux) · 显示文件系统磁盘空间使用情况的概览 ​

另请参阅:ncdu, duf。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/df-invocation.html。

  • 显示磁盘使用情况:
bash
df
  • 以可读的形式显示磁盘使用情况:
bash
df {{[-h|--human-readable]}}
  • 显示给定文件或目录的磁盘使用情况:
bash
df {{路径/到/文件或目录}}
  • 包括空闲 inode 数量的统计信息:
bash
df {{[-i|--inodes]}}
  • 显示文件系统但排除指定的类型:
bash
df {{[-x|--exclude-type]}} {{squashfs}} {{[-x|--exclude-type]}} {{tmpfs}}
  • 显示文件系统类型:
bash
df {{[-T|--print-type]}}

lsattr(Linux) · 列出 Linux 系统下的文件属性 ​

另请参阅:chattr。 更多信息:https://manned.org/lsattr。

  • 显示当前目录下文件的属性:
bash
lsattr
  • 列出指定路径下的文件属性:
bash
lsattr {{path}}
  • 递归列出当前目录及其子目录中所有文件属性:
bash
lsattr -R
  • 显示当前目录下所有文件的属性,包括隐藏文件:
bash
lsattr -a
  • 显示当前目录下的目录属性:
bash
lsattr -d

readelf(Linux) · 显示 ELF 文件信息 ​

更多信息:https://manned.org/readelf。

  • 显示 ELF 所有文件信息:
bash
readelf --all {{path/to/binary}}
  • 显示 ELF 文件的所有头信息:
bash
readelf --headers {{path/to/binary}}
  • 如果存在符号表项,则显示 ELF 文件内的符号表项:
bash
readelf --symbols {{path/to/binary}}
  • 显示 ELF 文件头信息:
bash
readelf --file-header {{path/to/binary}}

复制块数据、添加分区与创建文件系统 ​

块复制、内核分区条目、加密格式化和创建文件系统是不同操作。mkfs 是入口,后面按目标文件系统选择具体工具。

dd(Linux) · 转换和复制文件 ​

另请参阅:caligula。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/dd-invocation.html。

  • 从 isohybrid 文件(如 archlinux-xxx.iso)创建可启动 USB 驱动器并显示进度:
bash
sudo dd status=progress if={{路径/到/文件.iso}} of={{/dev/usb_drive}}
  • 以 4 MiB 块大小克隆驱动器到另一个驱动器,并在命令终止前刷新写入:
bash
sudo dd bs=4M conv=fsync if={{/dev/源驱动器}} of={{/dev/目标驱动器}}
  • 使用内核随机驱动程序生成具有指定数量随机字节的文件:
bash
dd bs={{100}} count={{1}} if=/dev/urandom of={{路径/到/随机文件}}
  • 测试磁盘的写入性能:
bash
dd bs={{1M}} count={{1024}} if=/dev/zero of={{路径/到/1GB文件}}
  • 创建系统备份,保存为 IMG 文件(稍后可通过交换 if 和 of 参数恢复),并显示进度:
bash
sudo dd status=progress if={{/dev/驱动器设备}} of={{路径/到/文件.img}}
  • 检查正在进行的 dd 操作的进度(在另一个 shell 中运行此命令):
bash
progress

addpart(Linux) · 将特定分区的存在告知 Linux 内核 ​

这个命令是 add partition ioctl 的简单封装。 更多信息:https://manned.org/addpart。

  • 将特定分区的存在告知 Linux 内核:
bash
addpart {{设备名}} {{分区名}} {{起始点}} {{长度}}

cryptsetup luksFormat(Linux) · 初始化 LUKS 分区并使用口令或密钥文件初始化密钥槽位(0) ​

注意:此操作将覆写分区上的所有数据。 更多信息:https://manned.org/cryptsetup-luksFormat。

  • 使用口令初始化 LUKS 卷:
bash
cryptsetup luksFormat {{/dev/sdXY}}
  • 使用密钥文件初始化 LUKS 卷:
bash
cryptsetup luksFormat {{/dev/sdXY}} {{路径/到/密钥文件}}
  • 使用口令初始化 LUKS 卷并设置其标签:
bash
cryptsetup luksFormat --label {{标签}} {{/dev/sdXY}}

mkfs(Linux) · 在硬盘分区上建立一个 Linux 文件系统 ​

该命令已被废弃,建议使用特定文件系统的 mkfs.<type> 工具。 更多信息:https://manned.org/mkfs。

  • 在分区上建立一个 Linux ext2 文件系统:
bash
sudo mkfs {{path/to/partition}}
  • 建立指定类型的文件系统:
bash
sudo mkfs {{[-t|--type]}} {{ext4}} {{path/to/partition}}
  • 建立指定类型的文件系统并检查坏块:
bash
sudo mkfs -c {{[-t|--type]}} {{ntfs}} {{path/to/partition}}

mkfs.ext4(Linux) · 在分区内创建一个 ext4 文件系统 ​

更多信息:https://manned.org/mkfs.ext4。

  • 在设备 b 的分区 1 内创建一个 ext4 文件系统(sdb1):
bash
sudo mkfs.ext4 {{/dev/sdb1}}
  • 创建一个带有卷标签的 ext4 文件系统:
bash
sudo mkfs.ext4 -L {{volume_label}} {{/dev/sdb1}}

mkfs.btrfs(Linux) · 创建一个 BTRFS 文件系统 ​

数据与元数据的分配 profile 分别选择;下面的双设备例显式使用 raid1,不能把它当作所有设备数量下的默认值。 更多信息:https://btrfs.readthedocs.io/en/latest/mkfs.btrfs.html。

  • 在单个设备上创建一个 btrfs 文件系统:
bash
sudo mkfs.btrfs --metadata single --data single {{/dev/sda}}
  • 在多个设备上使用 raid1 创建一个 btrfs 文件系统:
bash
sudo mkfs.btrfs --metadata raid1 --data raid1 {{/dev/sda}} {{/dev/sdb}} {{/dev/sdN}}
  • 为文件系统设置一个标签(可选):
bash
sudo mkfs.btrfs --label "{{label}}" {{/dev/sda}} [{{/dev/sdN}}]

mkfs.exfat(Linux) · 在分区内创建一个 exFAT 文件系统 ​

更多信息:https://manned.org/mkfs.exfat。

  • 在设备 b 的分区 1 内创建一个 exFAT 文件系统(sdb1):
bash
mkfs.exfat {{/dev/sdb1}}
  • 创建一个带有卷名的文件系统:
bash
mkfs.exfat -n {{volume_name}} {{/dev/sdb1}}
  • 创建一个带有卷 ID 的文件系统:
bash
mkfs.exfat -i {{volume_id}} {{/dev/sdb1}}

mkfs.fat(Linux) · 在分区内创建一个 MS-DOS 文件系统 ​

更多信息:https://manned.org/mkfs.fat。

  • 在设备 b 的分区 1 内创建一个 FAT 文件系统(sdb1):
bash
mkfs.fat {{/dev/sdb1}}
  • 创建一个带有卷名的文件系统:
bash
mkfs.fat -n {{volume_name}} {{/dev/sdb1}}
  • 创建一个带有卷 ID 的文件系统:
bash
mkfs.fat -i {{volume_id}} {{/dev/sdb1}}
  • 使用 5 个而不是 2 个文件分配表:
bash
mkfs.fat -f 5 {{/dev/sdb1}}

mkfs.ntfs(Linux) · 在分区内创建一个 NTFS 文件系统 ​

更多信息:https://manned.org/mkfs.ntfs。

  • 在设备 b 的分区 1 内创建一个 NTFS 文件系统(sdb1):
bash
sudo mkfs.ntfs {{/dev/sdb1}}
  • 创建一个带有卷标签的文件系统:
bash
sudo mkfs.ntfs {{[-L|--label]}} {{volume_label}} {{/dev/sdb1}}
  • 创建一个带有特定 UUID 的文件系统:
bash
sudo mkfs.ntfs {{[-U|--with-uuid]}} {{uuid}} {{/dev/sdb1}}

mkfs.f2fs(Linux) · 在分区内创建一个 F2FS 文件系统 ​

更多信息:https://manned.org/mkfs.f2fs。

  • 在设备 b 的第 1 个分区内创建一个 F2FS 文件系统(sdb1):
bash
sudo mkfs.f2fs {{/dev/sdb1}}
  • 创建一个带有卷标签的 F2FS 文件系统:
bash
sudo mkfs.f2fs -l {{volume_label}} {{/dev/sdb1}}

mkfs.cramfs(Linux) · 创建一个 ROM 文件系统,放置在分区内 ​

更多信息:https://manned.org/mkfs.cramfs。

  • 在设备 b 的第 1 个分区内创建一个 ROM 文件系统(sdb1):
bash
mkfs.cramfs {{/dev/sdb1}}
  • 创建一个带有卷名的 ROM 文件系统:
bash
mkfs.cramfs -n {{volume_name}} {{/dev/sdb1}}

mkfs.minix(Linux) · 在分区内创建一个 Minix 文件系统 ​

更多信息:https://manned.org/mkfs.minix。

  • 在设备 b 的分区 1 内创建一个 Minix 文件系统(sdb1):
bash
sudo mkfs.minix {{/dev/sdb1}}

blkdiscard(Linux) · 丢弃存储设备上的设备扇区。对 SSD 有用 ​

更多信息:https://manned.org/blkdiscard。

  • 丢弃设备上的所有扇区,删除所有数据:
bash
blkdiscard {{/dev/设备名}}
  • 安全地丢弃设备上的所有块,删除所有数据:
bash
blkdiscard {{[-s|--secure]}} {{/dev/设备名}}
  • 丢弃设备的前 100 MB:
bash
blkdiscard {{[-l|--length]}} {{100MB}} {{/dev/设备名}}

mknod(Linux) · 创建块或字符设备特殊文件 ​

更多信息:https://www.gnu.org/software/coreutils/manual/html_node/mknod-invocation.html。

  • 创建块设备:
bash
sudo mknod {{路径/到/设备文件}} b {{主设备号}} {{次设备号}}
  • 创建字符设备:
bash
sudo mknod {{路径/到/设备文件}} c {{主设备号}} {{次设备号}}
  • 创建先进先出(队列)设备:
bash
sudo mknod {{路径/到/设备文件}} p
  • 使用 SELinux 默认安全上下文创建设备文件:
bash
sudo mknod {{[-Z|--context]}} {{路径/到/设备文件}} {{类型}} {{主设备号}} {{次设备号}}

继续阅读