克隆整个macOS系统到新磁盘

笔者在VMWare虚拟机中安装了一个MacOS 10.15系统,VMware虚拟磁盘为160G,macOS中显示171.45G。随着使用时间的增长,虚拟磁盘占用的Windows的磁盘空间越来越大,导致使用挂起功能时,Windows的磁盘放不下了,但MacOS中的实际使用空间只有三分之一左右。于是就想重新建一个小点的虚拟磁盘,比如80G,然后把整个系统克隆过去。

这是磁盘工具中看到的磁盘信息:

一、新增磁盘

关闭虚拟机后,添加一块80G的新虚拟磁盘,再启动系统。

系统发现了新的磁盘,但是由于没有初始化,所以弹出提示:

初始化它,就可以在磁盘工具中看到它了:

分区:

格式选择与系统一致的APFS格式。

二、恢复

1. 使用磁盘工具恢复

尝试使用磁盘工具中的"恢复"功能,看能不能实现。

选中新磁盘,再点工具栏中的"恢复"按钮,弹出恢复对话框,"恢复来源"中系统会自动填写系统所在磁盘,最后点对话框中的"恢复"按钮。

很遗憾恢复失败:

看来MacOS 10.15中磁盘工具的恢复只能恢复HFS或者UFS格式的文件系统,而MacOS使用的APFS格式。

只能通过命令行的方式来操作了。

2. 使用命令行恢复

首先通过diskutil list列出磁盘列表:

bash 复制代码
$ diskutil list
/dev/disk0 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *85.9 GB    disk0
   1:                        EFI EFI                     209.7 MB   disk0s1
   2:                 Apple_APFS Container disk3         85.7 GB    disk0s2

/dev/disk1 (internal, physical):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      GUID_partition_scheme                        *171.8 GB   disk1
   1:                        EFI EFI                     209.7 MB   disk1s1
   2:                 Apple_APFS Container disk2         171.5 GB   disk1s2

/dev/disk2 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +171.5 GB   disk2
                                 Physical Store disk1s2
   1:                APFS Volume Data                    42.9 GB    disk2s1
   2:                APFS Volume Preboot                 83.8 MB    disk2s2
   3:                APFS Volume Recovery                529.9 MB   disk2s3
   4:                APFS Volume VM                      1.1 MB     disk2s4
   5:                APFS Volume Root                    11.2 GB    disk2s5

/dev/disk3 (synthesized):
   #:                       TYPE NAME                    SIZE       IDENTIFIER
   0:      APFS Container Scheme -                      +85.7 GB    disk3
                                 Physical Store disk0s2
   1:                APFS Volume 未命名                  712.7 KB   disk3s1

可以看到/dev/disk0和/dev/disk1两个物理磁盘,/dev/disk0是新磁盘,/dev/disk1是原来的系统磁盘,/dev/disk2是/dev/disk1的容器磁盘,/dev/disk3是/dev/disk0的容器磁盘。

现在需要把/dev/disk2的内容克隆到/dev/disk3中,注意只能是克隆容器磁盘,不能克隆物理磁盘,因为两个物理磁盘的容量不相等,而且使用的命令专门设计用于在容器级别工作,它会智能地处理 APFS 容器的特殊结构。

使用下面的命令就可以克隆磁盘内容了:

bash 复制代码
sudo asr restore --source /dev/disk2 --target /dev/disk3 --erase

输入命令后要求输入密码,再确认是否要清除目标磁盘的内容,等待完成操作。

bash 复制代码
$ sudo asr restore --source /dev/disk2 --target /dev/disk3 --erase
Password:
	Validating target...done
	Validating source...done
	Erase contents of /dev/disk3 ()? [ny]: y
	Replicating ....10....20....30....40....50....60....70....80....90....100
	Replicating ....10....20....30....40....50....60....70....80....90....100
	Restored target device is /dev/disk3s1.

此时看虚拟磁盘并没立即写过去一样,我刷新了N次,都是这样:

关闭MacOS系统,才会真正把数据写过去:

三、移出老磁盘,重启系统

此时可能会出现这样的提示,可以先不管它,可以正常启动。

可以先将所有硬盘移除,再重新添加,也可以使用后面第四步修改启动顺序。强烈建议先将所有硬盘移除,再重新添加,让启动磁盘始终在SATA 0:0的位置。

启动系统后,磁盘工具查看情况:

再看存储空间的使用情况,与之前的比较文稿与应用程序完全一致,系统与其他可能因为临时数据有点小差异:

使用完全正常。

四、修改启动顺序

在VMWare的"虚拟机"菜单执行"电源"/"打开电源时进入固件":

可以看到启动设备的顺序,这里执行"Enter setup"进入设置,选择"Configure boot options":

再选择里面的"Change boot order":

把SATA硬盘驱动(2.0)放在最前面:

然后"Commit changes and exit",重启即可。

如果本文对你有帮助,欢迎点赞收藏!

相关推荐
Lancker25 分钟前
没有 Mac 也能上架 iOS:GitHub Actions 全自动构建 + 签名 + TestFlight 送审实录
macos·ios·github
fei_sun19 小时前
RIB、FIB、MAC 、ARP 表
服务器·网络·macos
Highcharts.js1 天前
如何在macOS桌面应用集成Highcharts
macos·highcharts·前端可视化·交互图表
zaemyn20201 天前
macOS 上 AccessClient 无法唤起?排查 Python 架构与 Windows App 识别问题
windows·python·macos·远程桌面·accessclient
ZealSinger1 天前
Kotlin2.4迁移context parameters
kotlin·协程·迁移·kotlin2.4
Hello_Pyhx2 天前
VoiceStudio v0.5.6:从桌面生成到本地语音 API
ai·语音识别·克隆·声音
应用市场2 天前
把旧 Pixel 变成相册备份中转站(上):Mac 到安卓的照片传输工具设计——流式上传、sha256 校验、adb forward 与 Bonjour
android·macos·adb·kotlin·swift
Peter(阿斯拉)3 天前
[macOS Tahoe 26]_[使用SmartSVN访问库路径报错的问题]
macos·svn·tahoe·smartsvn·macos26
andyweike3 天前
iOS语法原理
macos·objective-c·cocoa
传奇开心果编程4 天前
【SwiftUI提高练中学】第8课 网络层架构:拦截器、重试、缓存与离线优先
学习·macos·ui·ios·swiftui