Appearance
磁盘管理
磁盘信息
diskutil - 磁盘工具
bash
diskutil list # 列出所有磁盘
diskutil info disk0 # 磁盘信息
diskutil info disk0s1 # 分区信息
diskutil listFilesystems # 支持的文件系统
diskutil activity # 磁盘活动system_profiler - 系统信息
bash
system_profiler SPStorageDataType # 存储信息
system_profiler SPSerialATADataType # SATA 信息
system_profiler SPDiagnosticsDataType # 诊断信息df - 磁盘空间
bash
df # 显示磁盘使用
df -h # 人类可读格式
df -T # 显示文件系统类型
df -i # 显示 inode 使用
df -x tmpfs # 排除文件系统
df / # 指定路径du - 目录大小
bash
du # 显示目录大小
du -h # 人类可读格式
du -sh /path # 显示总大小
du -h -d 1 # 显示一层深度
du -ah # 显示所有文件
du -sh * # 当前目录各文件大小
du -h --exclude="*.log" # 排除文件磁盘分区
diskutil 分区操作
bash
diskutil partitionDisk disk0 1 JHFS+ "Macintosh HD" 100%
diskutil partitionDisk disk0 2 JHFS+ "Macintosh HD" 50% JHFS+ "Data" 50%
diskutil eraseDisk JHFS+ "NewDisk" disk0
diskutil eraseVolume JHFS+ "NewVolume" disk0s1
diskutil deletePartition disk0s1
diskutil resizeVolume disk0s1 100g
diskutil splitPartition disk0s1 2 JHFS+ "Part1" 50% JHFS+ "Part2" 50%文件系统类型
| 类型 | 说明 |
|---|---|
| JHFS+ | 日志式 HFS+ |
| HFS+ | HFS+ |
| APFS | Apple File System |
| ExFAT | 扩展 FAT |
| FAT32 | FAT32 |
| NTFS | NTFS(只读) |
gpt - GPT 分区
bash
gpt -r show disk0 # 显示分区表
gpt create disk0 # 创建 GPT 分区表
gpt destroy disk0 # 销毁分区表
gpt add -t hfs disk0 # 添加分区
gpt remove -i 2 disk0 # 删除分区
gpt label -i 2 disk0 "Label" # 设置标签文件系统
格式化磁盘
bash
diskutil eraseDisk APFS "Macintosh HD" disk0
diskutil eraseDisk JHFS+ "Macintosh HD" disk0
diskutil eraseDisk ExFAT "USB" disk0
diskutil eraseDisk FAT32 "USB" disk0
diskutil eraseVolume APFS "Volume" disk0s1APFS 特性
bash
diskutil apfs list # 列出 APFS 容器
diskutil apfs create disk0s1 "Macintosh HD" # 创建 APFS 容器
diskutil apfs createVolume disk1 "Volume" 100g # 创建 APFS 卷
diskutil apfs deleteVolume disk1s2 # 删除 APFS 卷
diskutil apfs resizeContainer disk1 500g # 调整容器大小
diskutil apfs changeVolumeRole disk1s2 T # 设置卷角色APFS 卷角色
| 角色 | 说明 |
|---|---|
| N | 无 |
| S | 系统卷 |
| B | 预启动卷 |
| R | 恢复卷 |
| V | VM 卷 |
| T | 临时卷 |
磁盘检查与修复
磁盘验证
bash
diskutil verifyVolume / # 验证卷
diskutil verifyVolume disk0s1 # 验证指定卷
diskutil verifyDisk disk0 # 验证磁盘磁盘修复
bash
diskutil repairVolume / # 修复卷
diskutil repairVolume disk0s1
diskutil repairDisk disk0 # 修复磁盘fsck - 文件系统检查
bash
fsck_hfs -fy /dev/disk0s1 # 检查 HFS+
fsck_apfs -y /dev/disk0s1 # 检查 APFS
fsck_exfat -y /dev/disk0s1 # 检查 ExFAT
fsck_msdos -y /dev/disk0s1 # 检查 FAT需要在单用户模式或恢复模式下运行。
磁盘挂载
挂载操作
bash
diskutil mount disk0s1 # 挂载卷
diskutil mountDisk disk0 # 挂载整个磁盘
diskutil unmount disk0s1 # 卸载卷
diskutil unmountDisk disk0 # 卸载整个磁盘
diskutil unmount force disk0s1 # 强制卸载
mount # 显示已挂载
mount -t apfs # 显示 APFS 挂载挂载选项
bash
mount -o ro /dev/disk0s1 /mnt # 只读挂载
mount -o noexec /dev/disk0s1 /mnt # 禁止执行
mount_apfs /dev/disk0s1 /mnt # 挂载 APFS
mount_hfs /dev/disk0s1 /mnt # 挂载 HFS+磁盘映像
hdiutil - 磁盘映像工具
创建映像
bash
hdiutil create -size 10g -type SPARSE -fs HFS+ -volname "Backup" backup.sparseimage
hdiutil create -size 10g -type UDIF -fs HFS+ -volname "Data" data.dmg
hdiutil create -srcfolder /path/to/folder -fs HFS+ -volname "Archive" archive.dmg
hdiutil create -srcfolder /path/to/folder -encryption AES-256 -fs HFS+ secure.dmg
hdiutil create -size 10g -type SPARSEBUNDLE -fs HFS+ -volname "TimeMachine" backup.sparsebundle挂载映像
bash
hdiutil attach image.dmg # 挂载映像
hdiutil attach -readonly image.dmg # 只读挂载
hdiutil attach -mountpoint /mnt image.dmg # 指定挂载点
hdiutil attach -stdinpass image.dmg # 从标准输入读取密码卸载映像
bash
hdiutil detach /dev/disk2 # 卸载映像
hdiutil detach /Volumes/Backup
hdiutil eject /dev/disk2 # 弹出转换映像
bash
hdiutil convert image.dmg -format UDRW -o output.dmg # 转换格式
hdiutil convert image.dmg -format UDZO -o compressed.dmg # 压缩
hdiutil convert image.dmg -format UDBZ -o compressed.dmg # bzip2 压缩
hdiutil imageinfo image.dmg # 查看映像信息
hdiutil resize -size 20g image.sparseimage # 调整大小
hdiutil compact image.sparseimage # 压缩稀疏映像映像格式
| 格式 | 说明 |
|---|---|
| UDRO | 只读 |
| UDCO | 压缩(ADC) |
| UDZO | 压缩(zlib) |
| UDBZ | 压缩(bzip2) |
| UDRW | 读写 |
| UDTO | DVD/CD 主 |
| UDSP | 稀疏 |
| UDSB | 稀疏包 |
磁盘加密
FileVault
bash
fdesetup status # 查看 FileVault 状态
fdesetup enable # 启用 FileVault
fdesetup disable # 禁用 FileVault
fdesetup list # 列出授权用户
fdesetup add -usertoadd user # 添加用户
fdesetup remove -user user # 移除用户
fdesetup changerecovery -personal # 更改个人恢复密钥
fdesetup showdeferralinfo # 显示延迟信息加密磁盘映像
bash
hdiutil create -size 10g -encryption AES-256 -fs HFS+ -volname "Secure" secure.dmg
hdiutil create -srcfolder /path/to/folder -encryption AES-256 -fs HFS+ secure.dmg磁盘克隆
asr - Apple Software Restore
bash
sudo asr restore --source /Volumes/Source --target /Volumes/Dest --erase
sudo asr restore --source image.dmg --target /Volumes/Dest --erase
sudo asr restore --source /Volumes/Source --target /Volumes/Dest --erase --noverify使用 hdiutil 克隆
bash
hdiutil create -srcfolder /Volumes/Source -fs HFS+ -volname "Clone" clone.dmg
hdiutil attach clone.dmg磁盘性能
测试磁盘速度
bash
diskutil info disk0 | grep "Solid State"
time dd if=/dev/zero of=/tmp/test bs=1m count=1000 # 写测试
time dd if=/tmp/test of=/dev/null bs=1m # 读测试
rm /tmp/testiostat - I/O 统计
bash
iostat # I/O 统计
iostat 1 # 每秒刷新
iostat -c 5 # 刷新5次
iostat -d disk0 # 指定磁盘
iostat -w 2 # 2秒刷新磁盘清理
安全擦除
bash
diskutil secureErase 0 disk0 # 快速擦除
diskutil secureErase 1 disk0 # 单次覆盖
diskutil secureErase 2 disk0 # 3次覆盖
diskutil secureErase 3 disk0 # 7次覆盖
diskutil secureErase freespace 0 / # 擦除空闲空间安全擦除级别:
- 0: 快速擦除
- 1: 单次覆盖(随机数据)
- 2: 3次覆盖(DoD 5220.22-M)
- 3: 7次覆盖(DoD 5220.22-M ECE)
- 4: 35次覆盖(Gutmann)
清理缓存
bash
sudo rm -rf /Library/Caches/*
rm -rf ~/Library/Caches/*
sudo periodic daily weekly monthly外部设备
查看设备
bash
diskutil list external # 列出外部磁盘
system_profiler SPUSBDataType # USB 设备
system_profiler SPFireWireDataType # FireWire 设备
system_profiler SPThunderboltDataType # Thunderbolt 设备弹出设备
bash
diskutil eject disk1 # 弹出磁盘
diskutil unmountDisk disk1 && diskutil eject disk1
drutil eject # 弹出光驱Time Machine
tmutil - Time Machine 工具
bash
tmutil status # 查看状态
tmutil destinationinfo # 查看目标
tmutil setdestination /Volumes/Backup # 设置目标
tmutil startbackup # 开始备份
tmutil stopbackup # 停止备份
tmutil latestbackup # 最新备份
tmutil listbackups # 列出备份
tmutil deletebackup /path/to/backup # 删除备份
tmutil local snapshot # 创建本地快照
tmutil listlocalsnapshots / # 列出本地快照
tmutil deletelocalsnapshots / # 删除本地快照磁盘工具 GUI
bash
open /System/Applications/Utilities/Disk\ Utility.app