清除重裝你的 Mac,不再遲疑

我大約每三年就會清除重裝一次電腦。所謂「清除重裝(Clean Install)」的具體意義是執行以下步驟:
- 選擇重要資料備份到外部空間
- 重新格式化硬碟並重新安裝 macOS
- 將備份資料重新遷移回原本的地方並恢復原先的環境
聽起來有點麻煩甚至嚇人。你可能會問,假如我忘記備份某個重要檔案,可能是價值 $19 的軟體授權檔案、珍藏的照片或是只輸入過一次永遠想不起來的密碼,那不是給自己找麻煩嗎?那究竟為什麼我(或是你)還是應該定期執行這個作業呢?
清除重裝就是重新奪回你電腦的控制權
電腦經過多年的使用,建立、搬移甚至複製了無數的資料夾跟檔案。其中當然部分是有意為之,但其實大部分都不是。這些可能因為系統升級而變動的路徑跟檔案、新版程式支援新的同步服務搬移不全或是單純健忘而重複匯入的資料。有時候它們只是單純佔用了系統空間,但有時候它們就是莫名狀況的根本原因,例如每次搬移檔案到特定資料夾就會出現的密碼視窗或是行事曆圖標的錯誤日期等等。
撇開這些不談,假設你的電腦運作完全沒問題,多年的使用也表示使用的軟體同樣經過多年的演進,不管是有更好的替代品或是根本已經下架了。以我的自身經驗舉例。一開始我使用內建的 Mail,然後轉換到快速與裝置間體驗一致的 Airmail,再轉換到收件匣歸零哲學的 Mailbox 直到它下架,現在則換成了 Spark 。當然,你可能一直以來都用內建的 Mail 直到現在都沒問題。那你有用微軟 Office 2014 for Mac 但現在考慮要轉換到 Office 365 嗎?還是從 Adobe Photoshop 換成 Sketch?我的意思是,軟體其實一直在演進,定期的檢視手上的工具是否合適對依賴電腦產出的工作者尤其重要。
清除重裝的過程,我們謹慎地檢視使用的軟體是否依然合適,檔案是否重要到需要備份,還是什麼設定讓我們覺得安心舒服。過程中,我們重新學習與熟悉的不只是機器本身,還有自己的使用習慣,也因為這個掃盲的過程我們逐漸取回電腦的控制權。當然,這是困難跟有風險的。意識的角落總是積累著灰塵、充滿著盲點,這也是意識的特性之一。幸好我們可以透過一些工具讓整個過程盡可能地安心跟省力。開心的是,這過程是累積性的,每次完成後的軟體清單跟檢查表都能讓下次的作業更輕鬆,在軟體的使用與選擇的意識也會隨著每次重新檢視而逐漸提升。
清除重裝不只是再安裝一次而已,重要的是在過程中重新發現對自己最有價值的是什麼。
讓我們開始吧。這個過程共包含三個部分:備份、重新安裝、檔案遷移。
第一部分:備份
需求:一個外接硬碟作為 Time Machine 使用與存放備份資料使用。
重要的事先做:使用 Time Machine 執行一次完整系統備份。有了這個保險,我們就有能力還原任何檔案,真的是「任何檔案」。做錯任何事情想恢復?沒問題,只要還原即可。
有時候大家在備份資料上會有心有餘力不足的情況,原因是根本不知道從哪裡開始,但是其實只要仔細想想就會發現,軟體是所有資料的核心,所有的資料都由我們所使用的軟體而生。所以由軟體為出發點思考,我們有這三類資料需要備份:
- 你所使用的軟體
- 你透過軟體間接產生的資料,包含設定、歷史紀錄、備份檔案等等⋯
- 你透過軟體直接產生的靜態檔案,像是文件、照片、專案資料等等⋯
我們從使用 Homebrew 列出軟體清單開始。Homebrew 是一個 Mac 的命令列軟體管理工具,管理的意思是它可以安裝、移除還有列出軟體清單。如果你像我一樣是軟體開發者,你可能已經正在用了,如果不是的話也不用擔心,單純地複製貼上以下步驟中的指令就可以讓它運作了。
- 打開內建的終端機程式貼上以下指令按 Enter 即可
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"- 安裝 mas-cli 外掛讓 Homebrew 支援 Mac App Store
brew install mas- 使用
brew bundle指令列出軟體清單
brew bundle dump這個指令會在當前目錄(預設是家目錄)新增一個叫做 Brewfile 的檔案:
...
# 格式
# brew 'app_name'
# cask 'app_name'
# mas 'app_name', id: xxxxxxxxx
brew 'mas'
cask 'java'
mas 'iMovie', id: 408981434
...檔案的每一行都會以三個關鍵字 brew, cask, mas 開頭,表示軟體使用 Homebrew 的哪個工具安裝:brew 大多是命令列工具,cask 是以命令列方式安裝 Mac apps,mas 則表示從官方 Mac App Store 安裝。在空格之後是以單引號包住的軟體名稱。規則可參照上述範例,行列可以互換,# 開頭的文字視為註解。
接著,檢視這個清單並比較你在應用程式資料夾的 apps。如果有不在清單上的 app,表示這可能是從其他的來源像是開發者的網站或是 CD-ROM。使用 brew cask search {app_name} 指令來搜尋其他替代來源安裝
brew cask search java
==> Exact Match
java ✔
==> Partial Matches
eclipse-java java-jdk-javadoc netbeans-java-ee netbeans-java-se yourkit-java-profiler
==> Remote Matches
caskroom/versions/java-beta因為 brew-cask 是社群維護的工具,有很大的機會可以從這邊找到安裝來源。如果有的話,在 Brewfile 加入一行 cask 'app_name' 即可。如果找不到而你又需要這個軟體的話,就必須手動備份或是找到其他替代方案了。
完成之後我們就有了詳細的軟體清單 Brewfile,如果怕忘記的話也可以用註解的方式寫下軟體的用途。之後把這個檔案儲存在外接硬碟或是 Dropbox,我們稍後會用到。
更多 Homebrew 的細節可以參考 homebrew, homebrew-bundle, homebrew-cask 跟 mas-cli。你也可以查看我的軟體清單。
我們已經製作也重新檢視了目前的軟體清單,也寫下為什麼需要他們的註解,相當確定這就是我們需要的軟體。現在進行下一步,也就是軟體資料的部分。在這個步驟,我們要打開每一個我們需要的 app,檢視每一個曾經做過的設定、產生的文件或是資料的備份,用自己的方式記錄下來確保我們可以在重新安裝後有能力還原。詳細的內容根據每個人使用的軟體或習慣不同而有所不同,不能一概而論。我自己是在檢視完所有軟體跟設定之後列出一個檢查表,其中的部分內容如下:
* 接下來出現的波浪符號
~表示你的家目錄
系統偏好設定
- 一般 > 使用暗色選單列和 Dock
- 一般 > 最近使用過的項目:0 個文件、App 和伺服器
- 桌面與螢幕保護程式 > 螢幕保護程式 > 啟動前閒置時間:2 分鐘
- 桌面與螢幕保護程式 > 螢幕保護程式 > 使用 Apple TV Aerial Screen for Mac
- …
鑰匙圈
- 啟用 iCloud 鑰匙圈
Safari
- 從
~/資源庫/Safari/Bookmarks.plist備份書籤 - 從
~/資源庫/Safari/History*備份歷史瀏覽紀錄
照片
- 從
~/圖片/Photos Library.photoslibrary備份整個照片圖庫
iTunes
- 從
~/音樂/iTunes備份整個音樂資料庫 - 取消 iTunes 的 AppleID 授權:https://support.apple.com/zh-tw/HT201251
iBooks
- 從
~/資源庫/Containers/com.apple.BKAgentService/Data/Documents/iBooks/Books/備份 PDFs 跟電子書
訊息
- 從
~/資源庫/Messages備份訊息歷史與檔案
1Password
- 啟用 iCloud 同步
- 從
~/資源庫/Containers/2BUA8C4S2C.com.agilebits.onepassword-osx-helper/Data/Library/Backups/備份 1Password 備份檔
字型
- 從
~/資源庫/Fonts備份字型
Dotfiles(開發者才需要)
- 備份
~/.ssh - 備份
~/.gitconfig - 備份
~/.zshrc
最後是靜態檔案,相較前面兩個步驟這是比較簡單的。只要檢視以下資料夾內哪些檔案需要備份即可,或是直接備份每一個資料夾也可以。
~/桌面~/文件~/下載項目~/音樂除了已經備份的 iTunes 資料夾以外的檔案~/影片- 其他存放個人資料的資料夾
噠啦!你已經完成了!🎉
溫馨提醒,以上並不是完整的清單,完整與否根據每一個人不同的需求而不同。對我來說,我想要我的電腦可以讓細碎的片段延續,像是瀏覽紀錄、對話紀錄等等這些每天的生活片段。但畢竟每個人偏好不同,說不定你更是把過去拋諸腦後,未來對你才是最重要的類型,完全沒問題的。
第二部分:重新安裝
需求:一個大於 8GB 的隨身碟
首先,我們需要一個可開機的隨身碟
- 下載 macOS Mojave
- 打開
磁碟工具選擇隨身碟、點擊清除、名稱使用Untitled、選擇Mac OS Extended (Journaled)重新格式化 - 在
終端機輸入以下指令來製作可開機隨身碟
sudo /Applications/Install\ macOS\ Mojave.app/Contents/Resources/createinstallmedia --volume /Volumes/Untitled --applicationpath /Applications/Install\ macOS\ Mojave.app --nointeraction接著,再以 Time Machine 完整備份一次並確認完成以下:
- 你的 Time Machine 完整備份已經完成
- 軟體清單
Brewfile檔案及記載各種設定的文件已經放在 Dropbox 或外接硬碟 - 手動備份的檔案可以正常的存取準備好搬移
注意:你即將在下個步驟開始刪除電腦上的所有檔案,你將不能正常使用你的電腦直到新的作業系統安裝完畢
最後,開始格式化硬碟並重新安裝作業系統:
- 接上可開機隨身碟
- 重新啟動電腦後按住 Option(⌥) 鍵
- 選擇使用可開機隨身碟開機
- 從選單選擇
磁碟工具並以Mac OS Extended (Journaled)重新格式化硬碟(通常是 Macintosh HD) - 完成後回到主選單,選擇安裝 macOS 並安裝在剛完成格式化的硬碟
- 依照指示完成安裝設定步驟
第三部分:遷移檔案
首先,還原曾經安裝過的軟體,神奇的 Brewfile 上場了
- 打開
終端機貼上以下指令來安裝 Homebrew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"- 複製
Brewfile到家目錄 - 輸入
brew bundle,如有提示則登入 AppleID 供mas使用
這時 Homebrew 將會根據稍早完成的軟體清單安裝所有軟體。這會需要一點時間,等待的同時我們可以邊把手動備份的靜態檔案以原本的方式搬移回去。直到軟體安裝完畢之後,再把軟體資料以原本的方式搬移回去,我們就大功告成啦!🎉🎉🎉
參考資料
- 我把自己用的流程檢查表公布在 GitHub 上,未來也會持續更新,歡迎自由取用
- 我也把開發者用的 Dotfiles 公開在 GitHub 上,包含我的 Brewfile。如果你對 Dotfiles 有興趣,這是一份由 Zach Holman 維護的較為複雜的版本
- 如果你對開發者工具相當熟悉也想要自動化所有流程,可以參考 Boxen
感謝你們的閱讀。如果你喜歡這篇文章的話請 👏 讓更多人看到。
