macos 用 homebrew bundle 迁移配置的核心是导出并复用 brewfile:通过 brew bundle dump --force 生成含 brew/cask/tap/mas 的清单,存入 dotfiles;手动优化后,在新机运行 brew bundle install 一键还原,再配合 defaults.sh、extensions.list 等实现全环境声明式恢复。

MacOS 上用 Homebrew Bundle 迁移配置清单,核心是把已安装的软件(包括 cask 应用、tap 源、brew 包)导出为一个可复用的 Brewfile,再在新机器或重装后一键还原。关键不在于“装多少”,而在于“装得准、配得全、恢复快”。
生成完整 Brewfile
Homebrew Bundle 默认只记录通过 brew bundle 安装过的包,要从零构建迁移清单,需主动导出当前环境:
- 运行
brew bundle dump --force:强制覆盖现有 Brewfile,包含 brew、cask、tap 和 mas(Mac App Store)条目(需提前登录 mas) - 若不用 mas,加
--no-mas;若跳过 cask(比如只导命令行工具),加--no-cask - 生成的 Brewfile 是纯文本,建议存入个人 dotfiles 仓库,和 shell 配置一起版本管理
定制 Brewfile 提升可维护性
自动生成的 Brewfile 是“快照”,但手动优化后更可靠:
- 删掉临时测试包或已弃用软件,避免污染新环境
- 对常用 cask 加注释说明用途,例如:
# editor前加cask "visualstudiocode" - 用
brew tap-pin固定特定 tap 版本(如tap "homebrew/core"通常无需指定,但私有 tap 可加tap "user/repo", branch: "stable")
在新 Mac 上一键还原
确保 Homebrew 已安装(/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"),然后:
- 把 Brewfile 放到当前目录,运行
brew bundle install - 首次运行会自动安装缺失的 tap,并按顺序执行 brew → cask → mas;失败项会报错但不影响其余流程
- 想跳过某些条目(如大体积应用),可在 Brewfile 中临时注释掉对应行,或加
skip_postinstall: true防止启动时弹窗
同步非 Homebrew 配置项
Brewfile 管不了终端主题、VS Code 扩展、Safari 设置等。实用做法是:
- 用
defaults read导出关键系统偏好(如 Dock、Finder),保存为defaults.sh脚本 - VS Code 扩展导出:
code --list-extensions > extensions.list,再用xargs -n 1 code --install-extension 批量装 - 把 Brewfile + defaults.sh + extensions.list + dotfiles 合并进一个 setup 脚本,实现“一条命令走天下”
Homebrew Bundle 不是万能备份工具,但它把软件层的迁移变成了声明式操作——你定义“要什么”,它负责“怎么装”。配合脚本和版本管理,重装系统不再可怕。










