实战指南storage
安全挂载移动存储
通过多项属性识别移动设备,以只读方式挂载、验证并正常卸载。
通过容量、型号、传输总线、文件系统和 UUID 识别目标,以只读方式挂载到独立目录,确认来源和选项后正常卸载。
- 已保存重要数据;未知或疑似损坏的介质应先制作镜像,不在原件上试错。
- 当前用户可使用
sudo;不要把整段操作放入 root Shell。 - 不得仅凭
/dev/sdX名称选择设备,也不得使用本页占位值。
-
记录根文件系统来源,再列出块设备:
Terminal window findmnt -no SOURCE,TARGET,FSTYPE,OPTIONS /lsblk -o NAME,PATH,TYPE,SIZE,FSTYPE,UUID,LABEL,MOUNTPOINTS,MODEL,TRAN根据插拔前后变化及多项属性识别目标,并确认它不属于根文件系统设备链。
-
把已核对的 UUID 写入变量,并阻断未替换的占位值:
Terminal window DEVICE=/dev/disk/by-uuid/UUID_FROM_LSBLKMOUNT_POINT=/mnt/removableif [[ "$DEVICE" == */UUID_FROM_LSBLK ]]; thenprintf '%s\n' '请替换并核对 UUID' >&2elif [[ ! -b "$DEVICE" ]]; thenprintf '%s\n' '目标不是块设备' >&2elif findmnt --source "$DEVICE"; thenprintf '%s\n' '设备已挂载,请先核对现有挂载' >&2elselsblk -o NAME,PATH,SIZE,FSTYPE,UUID,LABEL,MOUNTPOINTS -- "$DEVICE"fi只有最后一条
lsblk成功显示且再次人工核对无误,才继续下一步。 -
创建专用目录并只读挂载:
Terminal window sudo mkdir -p -- "$MOUNT_POINT"sudo mount -o ro -- "$DEVICE" "$MOUNT_POINT"findmnt -no SOURCE,TARGET,FSTYPE,OPTIONS --mountpoint "$MOUNT_POINT" -
确认来源是目标 UUID、选项含
ro后再只读查看:Terminal window ls -la -- "$MOUNT_POINT" -
退出目录、关闭打开的文件并卸载:
Terminal window cd -- /sudo umount -- "$MOUNT_POINT"if findmnt --mountpoint "$MOUNT_POINT" >/dev/null; thenprintf '%s\n' '仍处于挂载状态,暂勿拔出' >&2elsesudo rmdir -- "$MOUNT_POINT"fi
挂载后 findmnt 必须显示预期来源、目标和 ro。卸载后再次查询不应返回该挂载点;只有确认已卸载后才移除设备。
挂载失败时不要格式化或反复尝试写入。若只创建了空目录,执行 sudo rmdir -- "$MOUNT_POINT"。若挂载到了错误设备,停止访问并按上一步正常卸载;不要删除介质内容来“回滚”。
| 现象 | 检查 | 处理 |
|---|---|---|
| 找不到设备 | 重新运行 lsblk,查看最新 dmesg |
检查供电、线缆和内核消息,不猜设备名。 |
| 未知文件系统 | 查看 FSTYPE 与内核错误 |
不要格式化;确认系统是否支持该文件系统。 |
target is busy |
终端是否位于挂载点,文件是否仍打开 | 离开目录并关闭程序后重试,不立即强制或延迟卸载。 |
选项不是 ro |
findmnt 的 OPTIONS |
立即停止写入并正常卸载,重新核对命令。 |
- 命令:lsblk、mount、umount、dmesg
- 概念:块设备、文件系统与挂载点