週五下午,團隊裡負責發版的同事在群組裡問了一句:「我們那台按月租的 Mac mini 下週三就到期了,裡面的憑證、模擬器資料和 Homebrew 快取怎麼辦?」沒人能立刻列出完整清單——這正是典型的遷出翻車前兆。雲端 Mac mini 用起來很順手,但很多狀態是「用的時候忘了它放在哪」,真到收尾那天才發現東西散落在十幾個目錄裡。
為什麼租期結束前的遷出常常翻車
多數人對「遷出」的理解停留在「把專案資料夾拷回本機」,但真正卡住建置的往往是隱藏設定:~/.ssh 裡簽發過的部署金鑰、Keychain 裡的發行憑證、~/Library/Developer/Xcode/DerivedData 裡的增量建置索引,以及各種工具悄悄寫在使用者目錄下的快取路徑。這些東西平時不起眼,一旦機器到期釋出,就再也拿不回來了。
遷出不是「備份檔案」,而是「重現一台能立刻工作的機器」。判斷標準不是「檔案有沒有拷完」,而是「在新機器上跑一次建置,產出物和舊機器一致嗎」。
遷出前的資產清單:哪些東西必須帶走
先把要帶走的東西分成兩類,分類本身就能減少遺漏。
開發環境設定
包括 shell 設定(.zshrc/.zprofile)、SSH 金鑰與 known_hosts、Git 全域設定與憑證、Xcode 簽名憑證與描述檔,以及透過 security 指令匯出的 Keychain 項目。這類檔案體積小但缺一不可,建議獨立打成一個歸檔。
專案與依賴快取
包括程式碼庫(理論上應該都推到遠端了,但本機未 push 的分支要額外檢查)、CocoaPods 與 SwiftPM 的本機快取、Homebrew 安裝的套件清單(用 brew bundle dump 匯出 Brewfile,比整包拷貝 /opt/homebrew 划算得多),以及 Podfile.lock、.xcode-version 這類鎖定檔案。
三層備份策略:rsync 增量 + tar 歸檔 + 快照下載
別指望單一手段能兜底所有情境,三層組合起來才夠穩。
| 層級 | 工具 | 適用場景 | 缺點 |
|---|---|---|---|
| 第一層 | rsync 增量同步 | 日常持續備份,專案檔案、設定檔 | 需要目標端可寫,不適合超大二進位檔 |
| 第二層 | tar 打包歸檔 | 一次性打包 Keychain、憑證等敏感小體量資料 | 不便於增量更新 |
| 第三層 | 平台快照下載 | 前兩層失敗後的最後兜底 | 體積大,受出口頻寬限制,耗時長 |
用 rsync 做增量同步
從本機發起,把 Mac mini 上的關鍵目錄同步到本地或物件儲存掛載點:
rsync -avz --delete \
--exclude 'DerivedData' \
--exclude 'node_modules' \
dev@hk1.oncemini.com:~/projects/ \
~/backup/mac-mini-hk1/projects/
排除 DerivedData、node_modules 這類可重新產生的目錄,能把同步時間從幾十分鐘壓到幾分鐘。建議在到期前一週就開始每天跑一次,而不是等到最後一天才第一次同步——首次全量同步的耗時經常被低估。
打包不可變歸檔
對憑證、金鑰這類不常變動但絕對不能丟的資料,單獨打包並加密:
tar czf keychain-backup.tar.gz \
~/Library/Keychains \
~/.ssh
gpg -c keychain-backup.tar.gz
加密後的歸檔再走 rsync 或直接下載,避免明文金鑰在傳輸鏈路上留下痕跡。
平台快照下載作為兜底
如果前兩層因為網路問題沒跑完,主控台裡的整機快照下載可以當作最後一道保險,但要提前估算體積——512GB 的系統磁碟以住宅頻寬下載可能得花上數小時,務必預留緩衝時間,別拖到到期前幾小時才發起。
常見坑與檢查清單
- 忘記匯出
brew bundle dump產生的 Brewfile,新機器上裝軟體全靠回憶,版本號對不上。 - 只備份了專案程式碼,沒備份
.env裡的本機環境變數,新機器建置時缺設定而報錯。 - 用一般使用者權限跑 rsync,漏掉了系統層級憑證檔案的讀取權限,導致歸檔不完整卻沒有任何錯誤提示。
- 到期前幾小時才開始下載快照,一旦頻寬波動就直接來不及。
- 遷出後沒有清理舊機器上的金鑰與權杖,退租後這些憑證理論上仍然有效,存在安全隱患,應在最後一次登入時主動撤銷。
遷出後的新機器冷啟動驗證
搬完不代表結束,要在新環境跑一次完整驗證才能收尾:
brew bundle install --file=Brewfile
pod install --repo-update
xcodebuild -workspace App.xcworkspace \
-scheme App -configuration Release \
clean build
shasum -a 256 build/App.app/App
把新舊兩次建置的 shasum 輸出對比,一致才算遷移真正完成。這一步經常被省略,但恰恰是唯一能證明「環境沒丟東西」的客觀證據,比「看起來能跑」靠譜得多。
常見問題
租期到期後資料會保留多久?
平台標準保留期為72小時,建議在到期前48小時內就完成備份,別卡在最後一刻,以免網路波動或磁碟故障導致來不及重傳。
rsync 與平台快照下載該選哪個?
優先用 rsync 做增量備份到本機或物件儲存,速度快且可續傳;平台快照下載體積大、受出口頻寬限制,只作最後兜底手段。
遷出後怎麼確認新機器環境完整?
用同一份 Brewfile、Podfile.lock 與 .xcode-version 在新機器重建環境,跑一次完整建置並比對產物雜湊,雜湊一致才算遷移成功。
需要一台獨享 Mac mini 跑通你的建置流程嗎?
前往控制台租用 Mac mini