欢迎各位兄弟 发布技术文章
这里的技术是共享的
macOS 中卸载外置磁盘(如 U 盘、移动硬盘),推荐使用以下命令,按安全等级从高到低排列:
diskutil unmountDisk /dev/disk1
或者
diskutil unmount /Volumes/你的磁盘名称
特点: ✅ 安全弹出,确保所有数据写入完成
✅ 支持 Finder 进度条同步显示状态
✅ 自动处理文件锁定和进程占用
示例:
bashdiskutil unmount /Volumes/MyUSB
bashdiskutil unmount /dev/diskXsY
操作步骤:
先查看磁盘标识:
bashdiskutil list
找到外置磁盘的分区(如 /dev/disk3s1
):
bashdiskutil unmount /dev/disk3s1
bashdiskutil unmount force /dev/diskXsY
适用场景:
弹出时提示 "The disk is in use"
某些应用(如 Adobe 软件)锁定了文件
风险提示:
❗ 可能丢失未保存的文件修改
bashhdiutil detach -force /dev/diskX
适用场景:
磁盘无响应、假死状态
虚拟磁盘(.dmg)无法正常卸载
警告:
☠️ 等效直接拔插,可能导致数据损坏
bashdiskutil list external
bashlsof +D /Volumes/磁盘名称
bashosascript -e 'tell application "Finder" to eject every disk'
场景 | 推荐命令 |
---|---|
正常弹出 U 盘 | diskutil unmount /Volumes/USB |
找不到卷名时 | diskutil unmount /dev/disk3s1 |
被 Adobe 软件占用 | diskutil unmount force /dev/disk3s1 |
磁盘无响应 | hdiutil detach -force /dev/disk3 |
NTFS 格式磁盘:需提前保存数据,macOS 对 NTFS 的写入支持不稳定
Time Machine 备份盘:确保备份完成再卸载
固态 U 盘(SSD):建议等待 10 秒再物理拔除,确保缓存写入
建议优先使用 diskutil unmount
,只有在遇到顽固占用时才考虑 force
选项。除非磁盘完全卡死,否则不要动用 hdiutil detach
。
使用 diskutil 先卸载 外置u盘示例 ,再挂载外置u盘示例 ok 有大用
以下是在 macOS 中使用 diskutil
卸载和重新挂载外置 U盘的完整示例:
bash# 🌟 步骤 1:首先查看所有磁盘列表 diskutil list /dev/disk1 (external, physical):
#: TYPE NAME SIZE IDENTIFIER
0: GUID_partition_scheme *62.9 GB disk1
1: EFI EFI 209.7 MB disk1s1
2: Apple_APFS Container disk5 62.7 GB disk1s2
/dev/disk5 (synthesized):
#: TYPE NAME SIZE IDENTIFIER
0: APFS Container Scheme - +62.7 GB disk5
Physical Store disk1s2
1: APFS Volume 未命名2 5.8 MB disk5s1
# 🌟 步骤 2:安全卸载 U盘(两种方式任选) # 方式一:通过卷名卸载(推荐) diskutil unmount /Volumes/未命名2 # 方式二:通过设备节点卸载 diskutil unmount /dev/disk5s1 # disk5s1 是虚拟磁盘的分区, 不能使用 disk1s2,因为disk1s2 是物理磁盘的分区
或者 diskutil unmountDisk /dev/disk1 # /dev/disk1 是物理磁盘,可以这样弄
或者 diskutil unmountDisk /dev/disk5 # /dev/disk5 是虚拟的合成磁盘,也可以这样弄
# 🌟 步骤 3:拔插 U盘后重新挂载(无需手动操作) # macOS 会自动挂载,如未自动挂载可执行: diskutil mount /dev/disk5s1 # disk5s1 是虚拟磁盘的分区, 不能使用 disk1s2,因为disk1s2 是物理磁盘的分区 或者 diskutil mountDisk /dev/disk5 # /dev/disk5 是虚拟的合成磁盘,可以这样弄
但是 diskutil mountDisk /dev/disk1 是错的,,,,#它是物理磁盘,为什么上面可以卸载,这里不能挂载 # ⚠️ 遇到问题时的解决方案 # 1. 如果提示"磁盘正在使用中": diskutil unmount force /dev/disk5s1 #强制卸载 # 2. 如果忘记分区号: diskutil list | grep -A 3 "external" # 3. 长期未使用导致无法挂载:
diskutil eject /Volumes/未命名2 #使用这个行(卸载并弹出) 或者 diskutil eject /dev/disk5s1 # 使用这个也行,,,完全弹出, (卸载并弹出)
或者 diskutil eject /dev/disk1 #使用这个同样行, /dev/disk1 是物理磁盘 (卸载并弹出物理磁盘),
或者 diskutil eject /dev/disk5 #使用这个同样也行 (卸载并弹出)
然后物理重新插拔 U盘
卸载 vs 弹出:
unmount
:仅卸载文件系统,磁盘仍可见
eject
:完全断开连接(建议拨U盘前使用)
设备编号规律:
disk2
→ 物理磁盘
disk2s1
→ 第一个分区
自动挂载原理: macOS 的 diskarbitrationd
服务会监测 USB 热插拔事件并自动触发挂载。
bash# 卸载后修复文件系统(需先卸载) diskutil unmount /dev/disk2s1 diskutil repairVolume /dev/disk2s1 # 重新挂载为只读模式(防止数据篡改) diskutil mount readonly /dev/disk2s1
建议每次拔除 U盘前都先卸载,避免数据损坏。遇到 NTFS 格式 U盘时,推荐使用 Paragon NTFS 等第三方驱动以获得完整支持。
bbbb-admin@bbbb-admindeMac ~ % diskutil mount /dev/disk1s2 Volume on disk1s2 failed to mount because it appears to be an APFS Physical Store (or is the APFS Container already mounted?) Note that for this mount operation, Disk Arbitration reports that the operation is not supported (kDAReturnUnsupported) See "diskutil apfs list"
这个错误提示表明 /dev/disk1s2
是 APFS 容器(容器存储),而不是可以直接挂载的文件系统卷。以下是解决方案和详细解释:
APFS 结构特性:
APFS 使用容器(Container)存储多个卷(Volume)
物理分区(如 disk1s2
)是容器底层存储,不能直接挂载
需要挂载的是容器内的逻辑卷(如 disk1s2s1
)
你的情况:
disk1s2
是 APFS 物理存储分区
可能容器已经自动挂载了内部卷
bashdiskutil apfs list
输出示例:
APFS Container (1 found)
|
+-- Container disk1s2 12345678-9ABC-DEF0-1234-56789ABCDEF0
====================================================
APFS Container Reference: disk1s2
Capacity Ceiling: 500 GB
Capacity In Use By FS: 200 GB
|
+-- Volume disk1s2s1 (Macintosh HD)
| Mounted: /
| Capacity: 100 GB
|
+-- Volume disk1s2s2 (Preboot)
| Mounted: Not Mounted
|
+-- Volume disk1s2s3 (Recovery)
Mounted: Not Mounted
如果要挂载数据卷:
bash# 挂载容器中某个卷(如 disk1s2s1) diskutil mount /dev/disk1s2s1
如果确实需要处理容器:
bash# 解锁加密容器(FileVault情况) diskutil apfs unlockVolume /dev/disk1s2s1 # 修复容器(如果需要) diskutil repairVolume /dev/disk1s2s1
如果这是外置SSD/硬盘:
bash# 完全弹出后重新连接 diskutil eject /dev/disk1 # 物理拔插设备后会自动挂载
APFS 结构层级:
plaintextPhysical Disk (disk1) └── Partition (disk1s2) ← 你尝试挂载的这个 └── APFS Container ├── Volume 1 (disk1s2s1) ← 实际可挂载的 ├── Volume 2 (disk1s2s2) └── Volume 3 (disk1s2s3)
常见误操作场景:
把 Time Machine 备份磁盘的容器分区当作普通分区
尝试挂载系统恢复分区(Preboot
/Recovery
)
建议后续操作前先用 diskutil list
和 diskutil apfs list
确认要操作的具体卷标识符(通常带 s1s1
后缀)。
在macOS中卸载外置磁盘,可以使用`diskutil`命令。以下是具体步骤:
1. 首先,你需要知道要卸载的磁盘的标识符(例如`disk2s1`)。可以通过以下命令列出所有磁盘:
```bash
diskutil list
```
2. 找到你想要卸载的外置磁盘,记下其标识符(如`disk2s1`)。
3. 卸载磁盘(注意:这里卸载(unmount)并不是永久删除数据,只是安全地断开连接)。使用以下命令:
```bash
diskutil unmount /dev/disk2s1
```
或者,如果你知道挂载点(比如挂载在`/Volumes/MyDisk`),也可以直接使用挂载点路径:
```bash
diskutil unmount /Volumes/MyDisk
```
4. 如果你想要同时弹出磁盘(对于可移动介质,比如U盘或移动硬盘),可以使用`eject`命令,它会先卸载再物理弹出:
```bash
diskutil eject /dev/disk2s1
```
注意:在卸载之前,请确保没有文件正在从该磁盘读取或写入,否则可能会失败。
另外,在较新的macOS版本中,也可以使用`hdiutil`命令来卸载和弹出磁盘,但`diskutil`更常用。
总结:通常使用`diskutil unmount`来卸载,使用`diskutil eject`来卸载并弹出。
在 macOS 中卸载(安全移除)外置磁盘,可通过以下命令实现:
diskutil
(推荐)
diskutil unmount /Volumes/你的磁盘名称
或通过设备标识符卸载(需先通过 diskutil list
查看标识符):
diskutil unmount /dev/disk2s1 # 替换为你的磁盘标识符
umount
(基础命令)sudo umount /Volumes/你的磁盘名称 # 需要管理员权限
diskutil eject /Volumes/你的磁盘名称
查看磁盘名称/标识符:
在终端输入 diskutil list
,找到外置磁盘的 名称(如 MyPassport
)或 标识符(如 /dev/disk2s1
)。
执行卸载命令(示例):
diskutil unmount /Volumes/MyPassport
成功后终端会显示:Volume MyPassport unmounted
安全移除:
磁盘卸载后,系统会提示“可安全移除此磁盘”,此时可物理拔出。
卸载前确保无文件正在读写磁盘,否则会失败。
图形界面操作:也可在 Finder 中右键点击磁盘 → 推出。
若提示 Resource busy
,关闭所有使用该磁盘的程序(如 Terminal、Finder 窗口等)后重试。