APFS快照默认只读挂载以保障系统安全,可通过mount_apfs手动挂载并用mount命令验证ro标志;挂载后可用cp或tmutil直接提取文件,无需解包。

macOS 系统快照(如 APFS 快照)默认以只读方式挂载,这是设计使然,用于保障系统一致性与数据安全。你无法直接写入或修改挂载后的快照内容,但完全可以从中读取、浏览,甚至提取特定文件。
如何挂载系统快照并确认只读状态
APFS 快照不自动挂载,需手动通过 mount_apfs 命令挂载。系统会强制以只读模式挂载,无需额外参数:
- 先用
tmutil listlocalsnapshots /查看可用快照名称(例如com.apple.TimeMachine.2024-05-10-143217) - 创建挂载点:
sudo mkdir -p /Volumes/SnapshotMount - 挂载快照:
sudo mount_apfs -o ro,snapshot="com.apple.TimeMachine.2024-05-10-143217" /dev/disk1s1 /Volumes/SnapshotMount(注意将/dev/disk1s1替换为你的根卷设备标识) - 验证只读:执行
mount | grep SnapshotMount,输出中应含ro,;尝试touch /Volumes/SnapshotMount/test会提示Read-only file system
从只读快照中提取单个或多个指定文件
挂载后,快照即表现为普通只读目录,可使用标准命令复制所需文件(系统自动处理快照底层引用,无需解包):
- 提取单个文件:
cp "/Volumes/SnapshotMount/Users/John/Documents/report.pdf" ~/Desktop/ - 提取整个文件夹(保持结构):
cp -R "/Volumes/SnapshotMount/Users/John/Pictures/Vacation" ~/Desktop/ - 若目标路径含空格或特殊字符,务必用英文引号包裹完整路径
- 不支持
rsync --archive的部分写入标志(如-a中的权限/时间保留),因源为只读快照;但rsync -av --ignore-times可用于高效同步内容(忽略时间戳比对)
绕过挂载:用 tmutil 直接恢复特定文件(更轻量)
如果你只需一两个文件,无需挂载整个快照,tmutil 提供更简洁的“按需恢复”方式:
- 列出某快照中某个路径下的变更文件:
tmutil compare "com.apple.TimeMachine.2024-05-10-143217" /Users/John/Documents - 直接恢复单个文件(自动定位快照并拷贝):
tmutil restore "/Volumes/MobileBackups/Backups.backupdb/YourMac/Latest/Macintosh HD - Data/Users/John/Documents/note.txt" ~/Desktop/(路径可通过tmutil latestbackup和 Finder 显示包内容辅助获取) - 该方法不依赖挂载,也不需要
sudo,适合日常快速提取
注意事项与常见问题
快照访问虽安全,但有几处关键限制需留意:
- 快照生命周期有限:本地快照可能被系统自动清理(尤其空间紧张时),提取前建议先确认其仍存在
- 加密卷快照需先解锁对应加密卷(如 FileVault 已启用),否则挂载会失败
- 某些系统路径(如
/System,/usr)在较新 macOS(12+)中受 SIP 保护,即使在快照中也无法直接访问 —— 需禁用 SIP 才能挂载并浏览(不推荐,仅调试用途) - 挂载后不要强制卸载(
umount -f);应使用sudo umount /Volumes/SnapshotMount安全卸载










