使用 `asr restore` 命令进行 macOS 数据迁移:从 `/Volumes/Data` 到新磁盘 作者: Shine 时间: 2025-06-23 分类: macOS 评论 在日常使用 Mac 的过程中,我们可能会遇到以下几种场景: - 更换硬盘或 SSD,希望把现有系统完整迁移过去 - 制作可引导的 Hackintosh 安装磁盘 - 备份系统到另一块磁盘作为镜像 - 将 macOS 环境复制到另一台设备进行快速部署 这些场景都有一个共性:**希望高效、准确地迁移整个磁盘内容(包括系统文件、权限、引导信息等)**。而 macOS 自带的 `asr`(Apple Software Restore)命令,正是为此而生的。 --- ## 为什么不用拖文件的方式迁移? 虽然可以手动拖动文件、使用 `rsync` 或 `ditto` 等命令来迁移数据,但这些方法存在局限: - 无法迁移隐藏的系统文件和符号链接 - 权限和 ACL 可能丢失 - 文件级拷贝在大量小文件场景下效率低 - 无法制作可引导的系统盘 相比之下,`asr` 提供了**块级恢复(block-level restore)**,效率高、还原精准,是迁移系统盘或完整磁盘的首选工具。 --- ## 什么是 `asr restore`? `asr` 是 macOS 自带的命令行工具,全称 Apple Software Restore。常用来从磁盘镜像或另一个卷中恢复内容到目标磁盘。 基本语法如下: ```bash sudo asr restore --source /Volumes/源卷名 --target /Volumes/目标卷名 --erase ```` 参数说明: * `--source`:源卷路径(可以是挂载的磁盘或 `.dmg` 镜像) * `--target`:目标卷路径 * `--erase`:表示**清空目标卷**,使用块级恢复(更快、更精准) --- ## 实战命令 假设我有一个名为 `Data` 的卷(已安装好 macOS),现在我想把它完整迁移到另一块磁盘(挂载名为 `New-Hcakintosh`),可以使用以下命令: ```bash sudo asr restore --source /Volumes/Data --target /Volumes/New-Hcakintosh --erase ``` 执行后,系统会提示确认清除目标磁盘,并将 `Data` 的全部内容(包括隐藏文件、系统文件、EFI 引导等)克隆到目标磁盘。 > ⚠️ 注意:`--erase` 会清空目标磁盘,请确保没有重要数据! 整个迁移过程非常顺利,没有啥卡壳的  --- ## 常见用途场景 | 用途 | 是否推荐使用 asr | | ----------------- | ------------ | | 克隆 macOS 系统盘 | ✅ 是 | | Hackintosh 安装盘制作 | ✅ 是 | | 文件夹/用户数据拷贝 | ❌ 否(用 rsync) | | 制作 USB 安装盘(带完整系统) | ✅ 是 | | 定期增量备份 | ❌ 否(用 CCC) | --- ## 和其他工具对比 | 工具 | 是否支持系统迁移 | 支持块级克隆 | 是否免费 | 使用复杂度 | | ----------- | -------- | ------- | ---- | ----- | | asr | ✅ | ✅ | ✅ | 中 | | rsync/ditto | ❌(文件迁移) | ❌ | ✅ | 低 | | CCC | ✅ | ✅(增强功能) | ❌ | 低 | | SuperDuper! | ✅ | ✅ | 部分免费 | 低 | --- ## 总结 使用 `asr restore` 命令,是进行 macOS 磁盘数据迁移的专业方法之一。相比图形界面的 Time Machine 或第三方工具,`asr` 更加轻量、精准,特别适合以下用户: * 高级用户或开发者 * Hackintosh 爱好者 * 需要批量部署系统的技术人员 记得在执行命令前做好数据备份,确保目标磁盘的正确性。祝迁移顺利 🚀! --- ## 参考资料 * Apple 官方文档:`man asr`
使用 MacPorts 替代 brew / 解决低版本 macOS 系统使用 brew 安装软件包慢的问题 作者: Shine 时间: 2025-05-13 分类: macOS 评论 ## 背景 根据官方的介绍,brew 仅适合 macOS 13 及更高的版本上使用了:https://docs.brew.sh/Installation#macos-requirements 对于我还在用黑苹果 macOS Big Sur 确实不友好(公司电脑 3、4 年都没更新硬件了 😓)  ## brew 替代品 - MacPorts 通过在网络搜索,很多人推荐使用 [MacPorts](https://macports.org/ "MacPorts") 替代 brew。 安装方法也很简单,下载一个安装包就可以用了,具体安装教程看这个:https://www.macports.org/install.php 以我的系统 Big Sur 为例,我就下载对应的版本安装就好了  ### 使用方法 使用方法也很简单,访问这个网站 https://ports.macports.org/ 搜索你要的软件,比如 PHP84  找到对应的版本,点击进入详情,然后就会提示你用什么命令安装,点击 Copy 返回到终端执行即可: | - | - | | ------------ | ------------ | |  |  | | |  | 网络环境好的情况下,安装速度挺快的
macOS PHP 使用 Pecl 安装 Swoole 扩展并启用 openssl 作者: Shine 时间: 2023-08-26 分类: PHP 评论 ## 安装 PHP 可以参照此教程安装:https://stitcher.io/blog/php-82-upgrade-mac#upgrade-with-shivammathur/homebrew-php 为了节约时间,我摘抄部分 ```shell brew tap shivammathur/php brew install shivammathur/php/php@8.2 # 切换至 PHP 8.2 brew link --overwrite --force php@8.2 ``` ## 安装 openssl & 获取安装路径 如果你没有安装,可以使用此命令进行安装 ```shell brew install openssl ```  比如我的就是 `/usr/local/Cellar/openssl@3/3.1.2` 这个路径,请记住这个路径 ## 安装 swoole 扩展 & 启用 openssl 支持 > 确保你的网络环境正常 执行以下命令 ```shell sudo pecl install swoole ``` 当询问你是否启用 openssl 是,你就输入 `yes --with-openssl-dir=/usr/local/Cellar/openssl@3/3.1.2` > 其中 `/usr/local/Cellar/openssl@3/3.1.2` 是 openssl 的安装路径  其他的按照自己需求填入 `yes` OR `no` 就好了,不过需要注意可能需要指定相关库的路径,详情请查看[官方文档 -> 编译选项 -> 通用参数](https://wiki.swoole.com/#/environment?id=%e9%80%9a%e7%94%a8%e5%8f%82%e6%95%b0 "官方文档") ## 安装完成  检查是否安装成功,执行命令 `php --ri swoole`,如果有内容输出(如图)表示安装成功 
macOS 使用命令(networksetup)设置 PAC 代理 作者: Shine 时间: 2022-10-14 分类: macOS 评论 因为手动在网络设置里,设置的 PAC  可能会因为其它软件给关掉,如 ClashX 设置为系统代理替换掉  然后自己手动替换又比较麻烦,所以想着用命令去替换一下 ## 解决方案 所以在网上找到了一篇问答 [https://apple.stackexchange.com/a/166443](https://apple.stackexchange.com/a/166443 "https://apple.stackexchange.com/a/166443"),使用 `networksetup -setautoproxyurl` 命令即可 ### networksetup -setautoproxyurl 语法如下 ```shell networksetup -setautoproxyurl ``` #### 问题 1:怎么拿到 `` ? 可以通过 `networksetup -listallnetworkservices` 命令拿到(只是猜测,因为我的是黑苹果,并且是有以太网网卡)  #### 示例 1 给以太网网卡设置 PAC 地址 ```shell networksetup -setautoproxyurl "Ethernet" "http://192.168.30.87/autoproxy.pac" ``` 然后检查下设置状态 : ```shell networksetup -getautoproxyurl "Ethernet" ``` 
解决 VirtualBox Error creating machine: Error in driver during machine creation: Error setting up host only network on machine start 作者: Shine 时间: 2021-12-14 分类: VirtualBox 评论 执行命令 `docker-machine create --driver virtualbox master` 创建虚拟网卡报错: ```log Running pre-create checks... Creating machine... (master) Copying /Users/chuwen/.docker/machine/cache/boot2docker.iso to /Users/chuwen/.docker/machine/machines/master/boot2docker.iso... (master) Creating VirtualBox VM... (master) Creating SSH key... (master) Starting the VM... (master) Check network to re-create if needed... (master) Found a new host-only adapter: "vboxnet0" Error creating machine: Error in driver during machine creation: Error setting up host only network on machine start: /usr/local/bin/VBoxManage hostonlyif ipconfig vboxnet0 --ip 192.168.99.1 --netmask 255.255.255.0 failed: VBoxManage: error: Code E_ACCESSDENIED (0x80070005) - Access denied (extended info not available) VBoxManage: error: Context: "EnableStaticIPConfig(Bstr(pszIp).raw(), Bstr(pszNetmask).raw())" at line 242 of file VBoxManageHostonly.cpp ``` 搜到的相关链接: - https://www.bookstack.cn/read/Minikube-1.24-en/ad8abb690946c9ec.md 原因:**在 Linux、Mac OS X 和带有 VirtualBox >= 6.1.28 的 Oracle Solaris 上,默认情况下,仅主机网络只允许 192.68.56.0/21 范围内的 IP 地址。** 然而 docker-machine 指定创建(VBoxManage hostonlyif ipconfig vboxnet0 --ip192.168.99.1 --netmask 255.255.255.0)`192.168.99.1/24` 的网段,这就导致创建失败 ## 解决办法 1.VirtualBox 降级到 `6.1.28` 之前的版本,可以从这里下载:https://www.virtualbox.org/wiki/Download_Old_Builds_6_1 我下载的是 `6.1.26` (注意我下载的是 macOS X 版本):https://download.virtualbox.org/virtualbox/6.1.26/VirtualBox-6.1.26-145957-OSX.dmg 成功运行了 2.执行以下命令: > **我自己测试是失败的** ```shell sudo mkdir -p /etc/vbox sudo vim /etc/vbox/networks.conf ``` 内容填写 `* 10.0.0.0/8` 然后保存即可 --- #### 你在 Big Sur 安装,可能会遇到的: ``` Kernel driver not installed (rc=-1908) Make sure the kernel module has been loaded successfully. where: suplibOsInit what: 3 VERR_VM_DRIVER_NOT_INSTALLED (-1908) - The support driver is not installed. On linux, open returned ENOENT. ``` 解决办法:https://apple.stackexchange.com/questions/410529/virtualbox-does-not-work-after-upgrading-to-big-sur 简要概述: - 重启到恢复模式 -> 终端 -> 运行命令 `spctl kext-consent add VB5E2TV963` - 最后重启进系统即可