Linux:文件、目录与磁盘 · 识别磁盘、文件系统与文件属性至复制块数据、添加分区与创建文件系统
Linux:文件、目录与磁盘
识别磁盘、文件系统与文件属性
先用 lsblk 看块设备,再用 blkid 和 df 确认文件系统及容量;文件属性与二进制格式检查分别见 lsattr、readelf。
lsblk(Linux) · 列出设备信息
更多信息:https://manned.org/lsblk。
- 以树状格式列出所有存储设备:
lsblk- 同时列出空设备:
lsblk {{[-a|--all]}}- 以字节为单位而不是以人类可读的格式打印 SIZE 列:
lsblk {{[-b|--bytes]}}- 输出文件系统信息:
lsblk {{[-f|--fs]}}- 使用 ASCII 字符进行树形格式化:
lsblk {{[-i|--ascii]}}- 输出块设备的拓扑结构:
lsblk {{[-t|--topology]}}- 排除由逗号分隔的主要设备编号列表指定的设备:
lsblk {{[-e|--exclude]}} {{1,7,...}}- 使用逗号分隔的列列表显示自定义摘要:
lsblk {{[-o|--output]}} {{名称,序列号,型号,传输方式,类型,大小,文件系统类型,挂载点,...}}blkid(Linux) · 列出所有已识别的分区及其通用唯一标识符 (UUID)
更多信息:https://manned.org/blkid。
- 列出所有分区:
sudo blkid- 列出表中的所有分区,包括当前挂载点:
sudo blkid -o listdf(Linux) · 显示文件系统磁盘空间使用情况的概览
另请参阅:
ncdu,duf。 更多信息:https://www.gnu.org/software/coreutils/manual/html_node/df-invocation.html。
- 显示磁盘使用情况:
df- 以可读的形式显示磁盘使用情况:
df {{[-h|--human-readable]}}- 显示给定文件或目录的磁盘使用情况:
df {{路径/到/文件或目录}}- 包括空闲 inode 数量的统计信息:
df {{[-i|--inodes]}}- 显示文件系统但排除指定的类型:
df {{[-x|--exclude-type]}} {{squashfs}} {{[-x|--exclude-type]}} {{tmpfs}}- 显示文件系统类型:
df {{[-T|--print-type]}}lsattr(Linux) · 列出 Linux 系统下的文件属性
另请参阅:
chattr。 更多信息:https://manned.org/lsattr。
- 显示当前目录下文件的属性:
lsattr- 列出指定路径下的文件属性:
lsattr {{path}}- 递归列出当前目录及其子目录中所有文件属性:
lsattr -R- 显示当前目录下所有文件的属性,包括隐藏文件:
lsattr -a- 显示当前目录下的目录属性:
lsattr -dreadelf(Linux) · 显示 ELF 文件信息
- 显示 ELF 所有文件信息:
readelf --all {{path/to/binary}}- 显示 ELF 文件的所有头信息:
readelf --headers {{path/to/binary}}- 如果存在符号表项,则显示 ELF 文件内的符号表项:
readelf --symbols {{path/to/binary}}- 显示 ELF 文件头信息:
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 驱动器并显示进度:
sudo dd status=progress if={{路径/到/文件.iso}} of={{/dev/usb_drive}}- 以 4 MiB 块大小克隆驱动器到另一个驱动器,并在命令终止前刷新写入:
sudo dd bs=4M conv=fsync if={{/dev/源驱动器}} of={{/dev/目标驱动器}}- 使用内核随机驱动程序生成具有指定数量随机字节的文件:
dd bs={{100}} count={{1}} if=/dev/urandom of={{路径/到/随机文件}}- 测试磁盘的写入性能:
dd bs={{1M}} count={{1024}} if=/dev/zero of={{路径/到/1GB文件}}- 创建系统备份,保存为 IMG 文件(稍后可通过交换
if和of参数恢复),并显示进度:
sudo dd status=progress if={{/dev/驱动器设备}} of={{路径/到/文件.img}}- 检查正在进行的
dd操作的进度(在另一个 shell 中运行此命令):
progressaddpart(Linux) · 将特定分区的存在告知 Linux 内核
这个命令是
add partitionioctl 的简单封装。 更多信息:https://manned.org/addpart。
- 将特定分区的存在告知 Linux 内核:
addpart {{设备名}} {{分区名}} {{起始点}} {{长度}}cryptsetup luksFormat(Linux) · 初始化 LUKS 分区并使用口令或密钥文件初始化密钥槽位(0)
注意:此操作将覆写分区上的所有数据。 更多信息:https://manned.org/cryptsetup-luksFormat。
- 使用口令初始化 LUKS 卷:
cryptsetup luksFormat {{/dev/sdXY}}- 使用密钥文件初始化 LUKS 卷:
cryptsetup luksFormat {{/dev/sdXY}} {{路径/到/密钥文件}}- 使用口令初始化 LUKS 卷并设置其标签:
cryptsetup luksFormat --label {{标签}} {{/dev/sdXY}}mkfs(Linux) · 在硬盘分区上建立一个 Linux 文件系统
该命令已被废弃,建议使用特定文件系统的 mkfs.<type> 工具。 更多信息:https://manned.org/mkfs。
- 在分区上建立一个 Linux ext2 文件系统:
sudo mkfs {{path/to/partition}}- 建立指定类型的文件系统:
sudo mkfs {{[-t|--type]}} {{ext4}} {{path/to/partition}}- 建立指定类型的文件系统并检查坏块:
sudo mkfs -c {{[-t|--type]}} {{ntfs}} {{path/to/partition}}mkfs.ext4(Linux) · 在分区内创建一个 ext4 文件系统
- 在设备 b 的分区 1 内创建一个 ext4 文件系统(
sdb1):
sudo mkfs.ext4 {{/dev/sdb1}}- 创建一个带有卷标签的 ext4 文件系统:
sudo mkfs.ext4 -L {{volume_label}} {{/dev/sdb1}}mkfs.btrfs(Linux) · 创建一个 BTRFS 文件系统
数据与元数据的分配 profile 分别选择;下面的双设备例显式使用
raid1,不能把它当作所有设备数量下的默认值。 更多信息:https://btrfs.readthedocs.io/en/latest/mkfs.btrfs.html。
- 在单个设备上创建一个 btrfs 文件系统:
sudo mkfs.btrfs --metadata single --data single {{/dev/sda}}- 在多个设备上使用 raid1 创建一个 btrfs 文件系统:
sudo mkfs.btrfs --metadata raid1 --data raid1 {{/dev/sda}} {{/dev/sdb}} {{/dev/sdN}}- 为文件系统设置一个标签(可选):
sudo mkfs.btrfs --label "{{label}}" {{/dev/sda}} [{{/dev/sdN}}]mkfs.exfat(Linux) · 在分区内创建一个 exFAT 文件系统
- 在设备 b 的分区 1 内创建一个 exFAT 文件系统(
sdb1):
mkfs.exfat {{/dev/sdb1}}- 创建一个带有卷名的文件系统:
mkfs.exfat -n {{volume_name}} {{/dev/sdb1}}- 创建一个带有卷 ID 的文件系统:
mkfs.exfat -i {{volume_id}} {{/dev/sdb1}}mkfs.fat(Linux) · 在分区内创建一个 MS-DOS 文件系统
- 在设备 b 的分区 1 内创建一个 FAT 文件系统(
sdb1):
mkfs.fat {{/dev/sdb1}}- 创建一个带有卷名的文件系统:
mkfs.fat -n {{volume_name}} {{/dev/sdb1}}- 创建一个带有卷 ID 的文件系统:
mkfs.fat -i {{volume_id}} {{/dev/sdb1}}- 使用 5 个而不是 2 个文件分配表:
mkfs.fat -f 5 {{/dev/sdb1}}mkfs.ntfs(Linux) · 在分区内创建一个 NTFS 文件系统
- 在设备 b 的分区 1 内创建一个 NTFS 文件系统(
sdb1):
sudo mkfs.ntfs {{/dev/sdb1}}- 创建一个带有卷标签的文件系统:
sudo mkfs.ntfs {{[-L|--label]}} {{volume_label}} {{/dev/sdb1}}- 创建一个带有特定 UUID 的文件系统:
sudo mkfs.ntfs {{[-U|--with-uuid]}} {{uuid}} {{/dev/sdb1}}mkfs.f2fs(Linux) · 在分区内创建一个 F2FS 文件系统
- 在设备 b 的第 1 个分区内创建一个 F2FS 文件系统(
sdb1):
sudo mkfs.f2fs {{/dev/sdb1}}- 创建一个带有卷标签的 F2FS 文件系统:
sudo mkfs.f2fs -l {{volume_label}} {{/dev/sdb1}}mkfs.cramfs(Linux) · 创建一个 ROM 文件系统,放置在分区内
- 在设备 b 的第 1 个分区内创建一个 ROM 文件系统(
sdb1):
mkfs.cramfs {{/dev/sdb1}}- 创建一个带有卷名的 ROM 文件系统:
mkfs.cramfs -n {{volume_name}} {{/dev/sdb1}}mkfs.minix(Linux) · 在分区内创建一个 Minix 文件系统
- 在设备 b 的分区 1 内创建一个 Minix 文件系统(
sdb1):
sudo mkfs.minix {{/dev/sdb1}}blkdiscard(Linux) · 丢弃存储设备上的设备扇区。对 SSD 有用
- 丢弃设备上的所有扇区,删除所有数据:
blkdiscard {{/dev/设备名}}- 安全地丢弃设备上的所有块,删除所有数据:
blkdiscard {{[-s|--secure]}} {{/dev/设备名}}- 丢弃设备的前 100 MB:
blkdiscard {{[-l|--length]}} {{100MB}} {{/dev/设备名}}mknod(Linux) · 创建块或字符设备特殊文件
更多信息:https://www.gnu.org/software/coreutils/manual/html_node/mknod-invocation.html。
- 创建块设备:
sudo mknod {{路径/到/设备文件}} b {{主设备号}} {{次设备号}}- 创建字符设备:
sudo mknod {{路径/到/设备文件}} c {{主设备号}} {{次设备号}}- 创建先进先出(队列)设备:
sudo mknod {{路径/到/设备文件}} p- 使用 SELinux 默认安全上下文创建设备文件:
sudo mknod {{[-Z|--context]}} {{路径/到/设备文件}} {{类型}} {{主设备号}} {{次设备号}}继续阅读
- 知识专题
- 应用实践
- 知识专题