macOS 移动硬盘挂载与大文件断点续传笔记
1. 确认移动硬盘是否被识别
查看磁盘列表:
diskutil list
本次移动硬盘信息:
/dev/disk4 (external, physical)
└── disk4s2 Microsoft Basic Data HIKSEMI 2.0 TB
说明:
-
disk4:整个物理移动硬盘。 -
disk4s2:需要挂载的数据分区。 -
external, physical:macOS 已识别到外接物理硬盘。
查看文件系统:
diskutil info disk4s2 | grep -E "File System Personality|Type \(Bundle\)|Volume Name"
结果:
Volume Name: HIKSEMI
File System Personality: ExFAT
Type (Bundle): exfat
移动硬盘使用 ExFAT,正常情况下 macOS 支持读写。
2. 自动挂载失败
尝试自动挂载:
diskutil mount disk4s2
尝试只读自动挂载:
diskutil mount readOnly disk4s2
均出现:
Volume on disk4s2 failed to mount: "SUIS premount dissented"
这个错误通常表示 SystemUIServer 或配置策略拒绝挂载,可能与以下因素有关:
- 公司 MDM 管理策略。
- 系统中的设备管理描述文件。
- 安全软件或外置存储限制。
- macOS 自动挂载服务异常。
检查 Mac 是否受 MDM 管理:
profiles status -type enrollment
也可以查看:
系统设置 → 通用 → 设备管理
如果是公司管理的 Mac,应联系管理员开放外置存储权限。
3. 手动只读挂载 ExFAT
创建挂载目录:
sudo mkdir -p /Volumes/HIKSEMI
只读挂载:
sudo /sbin/mount_exfat -o rdonly \
-u "$(id -u)" \
-g "$(id -g)" \
/dev/disk4s2 \
/Volumes/HIKSEMI
打开移动硬盘:
open /Volumes/HIKSEMI
或者进入目录:
cd /Volumes/HIKSEMI
ls
只读挂载时不能创建或修改文件,执行写入操作会提示:
Read-only file system
4. 检查 ExFAT 文件系统
退出移动硬盘目录并卸载:
cd ~
sudo umount /Volumes/HIKSEMI
对 ExFAT 进行只读检查:
sudo /sbin/fsck_exfat -n /dev/rdisk4s2
其中:
-
-n表示只检查,不修改磁盘。 -
/dev/rdisk4s2是对应的原始设备,检查速度通常更快。
如果报告严重错误,不要直接读写挂载,应先备份数据或在 Windows 上检查修复。
5. 手动读写挂载 ExFAT
卸载后,macOS 可能自动删除 /Volumes/HIKSEMI,因此需要重新创建:
sudo mkdir -p /Volumes/HIKSEMI
以读写方式挂载:
sudo /sbin/mount_exfat \
-u "$(id -u)" \
-g "$(id -g)" \
/dev/disk4s2 \
/Volumes/HIKSEMI
确认挂载状态:
mount | grep HIKSEMI
测试写入:
mkdir /Volumes/HIKSEMI/aistack
进入工作目录:
cd /Volumes/HIKSEMI/aistack
6. 安全卸载移动硬盘
卸载前先离开移动硬盘目录:
cd ~
然后卸载:
sudo umount /Volumes/HIKSEMI
也可以尝试:
diskutil unmount disk4s2
确认传输已经完成,并且没有程序正在使用该磁盘后再拔出硬盘。
7. 使用 SCP 复制文件
普通复制命令:
scp -rp \
'root@11.50.139.163:/export/Data/qiaoning/文件名.tar' \
.
注意:
-
scp不支持可靠的断点续传。 - 中断后通常需要重新传输。
- 用单引号包住远程路径,可以避免 zsh 在本地展开
*。 - 单引号内不要写
\@或\_,直接使用@和_。
复制远端目录中的匹配文件:
scp -rp 'aistack211:/export/Data/qiaoning/*' .
这种 * 通常不包含隐藏文件。
8. 使用 rsync 断点续传
推荐命令:
rsync -avP \
'root@11.50.139.163:/export/Data/qiaoning/artifacts_pkg.upgrade.2.2.1-aistack-2.2.1-aistack-20260813019-1786609063_TO_2.3.1-aistack-2.3.1-aistack-20260915030-1789453952-multiOS_multiArch.202609161050.679193a33975914078446012b8b3abc1.tar' \
.
参数说明:
-
-a:归档模式,保留时间等属性。 -
-v:显示详细信息。 -
-P:等价于--partial --progress。 -
--partial:中断后保留未完成的数据。 -
--progress:显示传输进度。
传输中断后,重新执行完全相同的命令。只要部分文件仍然存在,rsync 会比较已有数据并继续同步。
macOS 旧版 rsync 的限制
macOS 自带的旧版 rsync 可能不支持:
--append-verify
如果提示:
rsync: unrecognized option `--append-verify'
直接使用:
rsync -avP '远端文件' .
旧版支持 --append,但它不会验证已存在部分的内容,因此通常优先使用普通的 -P,传输完成后再校验 SHA-256。
9. 远端没有 rsync 时
如果出现:
bash: rsync: command not found
说明远端服务器没有安装 rsync。rsync 需要本地和远端两边都有对应程序。
此时可以使用 SFTP 的 reget:
cd /Volumes/HIKSEMI/aistack
sftp root@11.50.139.163
在 sftp> 中执行:
reget /export/Data/qiaoning/完整文件名.tar
中断后重新连接,并再次执行相同的 reget,即可从本地已有文件末尾继续。
退出 SFTP:
bye
如果之后 rsync 又能正常显示:
Transfer starting: 1 files
说明远端当前已经可以运行 rsync,可能是远端环境或 PATH 与之前不同。
10. 为什么传输中的文件在 ls 中看不到
rsync 传输期间可能将数据写入以 . 开头的隐藏临时文件。普通的:
ls
不会显示隐藏文件。
查看所有文件:
ls -lah
查找当前目录中超过 1 GB 的文件:
find . -maxdepth 1 -type f -size +1G -print
检查 rsync 是否仍在运行:
ps aux | grep '[r]sync'
查看当前目录总大小:
du -sh .
传输完成后,rsync 会把临时文件改成正式文件名。
不要在传输过程中删除、移动或改名隐藏临时文件。
11. 校验传输结果
远端 Linux 计算 SHA-256:
ssh root@11.50.139.163 \
'sha256sum /export/Data/qiaoning/完整文件名.tar'
本地 macOS 计算 SHA-256:
shasum -a 256 /Volumes/HIKSEMI/aistack/完整文件名.tar
两边输出的 SHA-256 值必须完全一致。
也可以先检查文件大小。
远端:
ssh root@11.50.139.163 \
'ls -lh /export/Data/qiaoning/完整文件名.tar'
本地:
ls -lh /Volumes/HIKSEMI/aistack/完整文件名.tar
12. 推荐操作流程
diskutil list
↓
确认 disk4s2 和 ExFAT
↓
检查 MDM / 设备管理策略
↓
创建 /Volumes/HIKSEMI
↓
手动 mount_exfat 读写挂载
↓
进入 /Volumes/HIKSEMI/aistack
↓
使用 rsync -avP 传输
↓
中断后重新执行相同命令
↓
用 SHA-256 校验
↓
cd ~ 后安全卸载
安全提醒
- 有重要数据时不要执行
eraseDisk、eraseVolume或“抹掉”。 - 文件系统检查报错时,不要贸然读写。
- 公司管理的 Mac 不应绕过组织配置的外置存储策略。
- 移动硬盘正在传输数据时不要直接拔出。
- 最终文件应通过 SHA-256 校验确认完整性。