跳至主要內容
技術

Mackup vs chezmoi vs 手寫 script:macOS 設定備份工具怎麼選?

Mackup vs chezmoi vs 手寫 script:macOS 設定備份工具怎麼選?
一鍵搞定新 Mac 第 8 / 9 篇

本篇是「一鍵搞定新 Mac」系列的第 8 / 9 篇。你可以從系列總覽開始閱讀,也可以直接接著看本文。

想備份 macOS 的設定,Google 一下大概會出現三個主流方案:Mackup、chezmoi、手寫 shell script。

每個都說自己好用,但設計哲學完全不同。選錯了,換起來很麻煩。

這篇不是「哪個贏」,而是「你是哪種人就選哪個」。

三種方案的核心差異

先用一張表看懂本質差異:

Mackupchezmoi手寫 script
備份機制Symlink(符號連結)Copy + Templatedefaults write 指令
備份對象App 設定檔(plist/config)dotfiles(.zshrc 等)macOS 系統偏好
儲存位置iCloud / Dropbox / GitGit repoGit repo
多機差異難處理原生支援 template需手動 if/else
macOS Sonoma⚠️ Symlink 已知 bug✅ 完全相容✅ 相容
Secrets 管理❌ 無✅ 內建加密❌ 手動/有風險
學習曲線
GitHub Stars~15k~18.5kN/A
維護狀態趨緩非常活躍你自己維護

Mackup 的邏輯很直觀:

  1. 把 App 的設定檔從原本位置移動到 iCloud/Dropbox
  2. 在原本位置建立一個符號連結指向雲端位置
  3. 換電腦時,從雲端 restore,重建 symlink
brew install mackup

# 備份
mackup backup

# 還原
mackup restore

為什麼吸引人

支援超過 360 個 App,包含 VSCode、Sublime Text、Alfred、iTerm2、Karabiner 等常用工具。對非技術用戶來說,「一行指令搞定所有 App 設定」的概念非常吸引人。

實際踩到的坑

Symlink 是雙面刃。因為 App 直接讀寫雲端位置,設定變更會即時同步——聽起來很好,但:

  • ⚠️ macOS Sonoma (14+) 已知 bug:升級到 Sonoma 後 symlink 會壞掉,這是目前 Mackup 最大的問題。很多用戶因此遷移到其他方案。
  • iCloud 同步延遲:App 開啟時設定檔還在同步中,可能讀到舊版本
  • 多機同時修改:在公司電腦改了設定,回家電腦還沒同步就開啟 App,可能產生衝突
  • App 不尊重 symlink:現代 App(如 iTerm2、Fantastical)有時會直接覆寫 symlink 而不是跟隨它
  • 維護趨緩:近年 PR 積累,部分 App 的備份設定已過時

適合的人

  • 需要注意:如果你已經在 macOS Sonoma (14+) 上,Mackup 的 symlink 問題可能讓你踩坑
  • 如果用的是 Sonoma 以前的版本,或願意手動處理相容性問題,Mackup 在備份 GUI App 設定這件事仍有優勢
  • 主要需求是備份 GUI App 設定(而非 CLI dotfiles)
  • 只用一台電腦,不需要多機差異

chezmoi — Copy 派

chezmoi 的設計哲學完全不同:不用 symlink,改用 copy

它有一個獨立的 source directory(預設 ~/.local/share/chezmoi),你在那邊管理「設定檔的原始版本」,執行 chezmoi apply 才會把檔案複製到實際位置。

brew install chezmoi

# 把現有 dotfile 加入管理
chezmoi add ~/.zshrc
chezmoi add ~/.gitconfig

# 看差異
chezmoi diff

# 套用
chezmoi apply

為什麼值得花時間學

Template 系統是 chezmoi 最強的地方。同一份 source,可以根據機器不同輸出不同內容:

# ~/.local/share/chezmoi/dot_gitconfig.tmpl
[user]
    name = Bobo Chen
    email = {{ if eq .chezmoi.hostname "work-mac" }}bobo@company.com{{ else }}bobo@personal.com{{ end }}

公司電腦和個人電腦,自動用不同的 Git email。這件事用 Mackup 幾乎做不到。

其他亮點:

  • 加密 secrets:支援 1Password、Bitwarden、age 加密,私鑰也可以版控
  • 跨平台:同一份 dotfiles 可以用在 macOS 和 Linux
  • Git 原生:source directory 直接就是一個 git repo

學習曲線

chezmoi 的檔案命名有一套規則(dot_zshrc 對應 ~/.zshrcprivate_ 前綴代表 600 權限⋯⋯),需要花一點時間熟悉。但一旦上手,這套系統非常彈性。

適合的人

  • 有多台電腦,需要差異化設定(公司 vs 個人)
  • 需要版控加密的 secrets
  • 想要一套 dotfiles 同時支援 macOS + Linux
  • 不排斥花一個下午把系統學清楚

手寫 script — Script 派

不依賴任何工具,就是一個 shell script,跑 defaults write 指令:

#!/bin/bash

# 鍵盤速度
defaults write NSGlobalDomain KeyRepeat -int 2
defaults write NSGlobalDomain InitialKeyRepeat -int 15

# Dock
defaults write com.apple.dock autohide -bool true
defaults write com.apple.dock tilesize -int 48

# Finder
defaults write com.apple.finder AppleShowAllFiles -bool true
defaults write com.apple.finder ShowPathbar -bool true

# 重啟服務
killall Dock Finder 2>/dev/null || true

這個方案特別針對 macOS 系統偏好設定(不是 App 設定檔,也不是 dotfiles)。知名範本:mathiasbynens/dotfiles.macos 檔案,社群很多人拿來當起點。

優點

  • 零依賴:只要有 bash 就能跑
  • 完全可讀:每行都看得懂在幹嘛,有問題很容易 debug
  • 零隱私風險:只設定你明確選擇的項目
  • 跨版本穩定:你控制每個設定,macOS 升級不會意外覆蓋

缺點

  • 不備份 App 設定:只管得了 defaults write 能設定的範圍
  • 需要手動維護:新發現的好設定要自己加進去
  • 沒有衝突偵測:不知道現在的設定跟 script 有沒有差異

適合的人

  • 只需要備份 macOS 系統偏好設定(不需要備份 App 設定)
  • 重視可讀性和控制感
  • 不想引入額外依賴

三個方案怎麼組合用?

這三個方案並不互斥,很多人混著用。不過考量到 Mackup 在 Sonoma 的問題,我現在建議的組合是:

系統偏好設定    → 手寫 defaults.sh(Dock、Finder、鍵盤速度)
dotfiles 管理   → chezmoi(.zshrc、.gitconfig、App config 檔)
GUI App 設定    → 視情況:部分 App 的 config 檔也可以用 chezmoi 管

如果你的 Mackup 目前跑得好,繼續用沒問題。但如果是全新設定,我不會再推薦 Mackup 作為主要方案。

我的建議

剛開始 / 只需要系統設定:從手寫 defaults.sh 入手。學習成本最低,讓你先搞懂 defaults 系統怎麼運作,也不會有隱私風險。

現代 macOS(Sonoma+)的 App 設定備份:直接用 chezmoi。把 App 的 config 檔(很多 App 支援 XDG config dir 或 ~/.config/)加進 chezmoi 管理,比 Mackup 的 symlink 更穩定。

有多台電腦 / 有 Linux 機器:花時間學 chezmoi。前期投資值得,template 系統會讓你的 dotfiles 真正「活起來」。

已在用 Mackup 且沒問題:繼續用就好,不用急著換。但如果你在 Sonoma 上遇到 symlink 問題,這時候是遷移到 chezmoi 的好時機。


反思

選工具之前,先想清楚你要備份的是什麼:

  • macOS 系統設定(Dock、鍵盤速度)→ defaults.sh
  • CLI 工具的設定檔.zshrc.gitconfig)→ chezmoi
  • GUI App 的設定(Alfred、Karabiner)→ Mackup

把這三層分清楚,就不會再被「哪個方案最好」的問題困擾了。

留言討論

esc
輸入關鍵字搜尋文章...
查看收藏 →