利用 Homebrew 和 Mackup 優雅的備份和恢復電腦開發環境
遇到的問題
- 每次更換電腦都要重新安裝開發環境和初始化各類常用軟件的配置
- 最頭疼的是常用軟件的插件及個性化配置的遷移
如下流程我三年經歷了六次😣😣😣:
- 安裝 Homebrew
- 再用 Homebrew 安裝常用軟件:vscode,iTerm,nvm,Chrome……
- 增加配置文件,配置環境變量,如 nvm
- 安裝 vscode 的常用插件
- 配置插件
- 安裝 iTerm 插件
- 配置插件
- ......
整個過程繁瑣且耗時,怎麼解?
解法
解決軟件安裝效率問題
如果你已經使用 Homebrew 管理常用軟件,那一定要使用 Homebrew Bundle 優雅的備份和恢復軟件列表
批量備份 homebrew 軟件
# 執行brew bundle dump備份命令
brew bundle dump --describe --force --file="/your/path/to/Brewfile"
# 參數説明
--describe:為列表中的命令行工具加上説明性文字。
--force:直接覆蓋之前生成的 Brewfile 文件。如果沒有該參數,則詢問你是否覆蓋。
--file:在指定位置生成文件。如果沒有該參數,則在當前目錄生成 Brewfile 文件。
批量安裝 homebrew 軟件
brew bundle --file="/your/path/to/Brewfile"
批量安裝 vscode 插件
# vscode 安裝成功後,利用 vscode 提供的 code 命令批量安裝插件
code --install-extension dbaeumer.vscode-eslint
解決配置遷移問題
一切配置皆文件,所以只要解決文件同步該問題迎刃而解,這裏可以使用 git 或雲同步工具。
這裏還有一個小問題就是,從 git 同步下來配置文件如何生效?
不同軟件的配置文件放在固定目錄,一定是分散在文件系統的各個角落,而我們 git 同步下來的文件是按照我們自己定義的結構保存的,這裏就需要處理一下,讓我們的拉下來的配置文件生效。
解法就是使用「軟連接」
ln 命令是 linux 下一個十分重要也有用的命令,它可以為一個文件在另外一個地方建立一個同步的鏈接,類似於快捷鍵。
ln [參數] [源文件或目錄] [目標文件或目錄]
ln -s 創建軟鏈接命令,s 是代號 symbolic 的意思,所謂軟鏈接,它只會在你選定的位置上生成一個鏡像,而不會佔用磁盤空間,而如果使用 ln 不帶參數的話,則就是硬鏈接,會在選定的位置上生成一個和源文件大小相同的文件,佔用磁盤空間。
備份過程
將默認的配置文件全部移動到備份目錄,然後通過軟連接重定位配置文件的位置:
cp ~/.zshrc ~/dotfiles/.zshrc
rm ~/.zshrc
ln -s ~/dotfiles/.zshrc ~/.zshrc
還原過程
將 dotfiles 裏的備份配置軟鏈到實際位置:
ln -s ~/dotfiles/.zshrc ~/.zshrc
上述過程可以手寫腳本也可以使用 Mackup 這個工具完成
如何使用
備份配置
- 初始化目錄
# 找一個你喜歡的地方放置 dotfiles 文件夾,例如你的用户根目錄
cd ~
# 你可以 clone 我的這個模板
git clone https://github.com/lorcannn/dotfiles.git
# 或者你也可以自己控制目錄結構
mkdir dotfiles
...
- 備份 Homebrew 軟件
# 執行brew bundle dump備份命令
brew bundle dump --describe --force --file="~/dotfiles/homebrew/Brewfile"
- 手動備份 vscode 插件
# 手動複製插件 ID 後在 /vscode/setup.sh 中添加執行命令,如下面的命令將安裝 eslint 插件
code --install-extension dbaeumer.vscode-eslint
- 備份其他配置文件
# 通過 Homebrew (http://brew.sh/) 安裝
brew install mackup
# 創建 Mackup 的配置文件 參考: https://github.com/lra/mackup/blob/master/doc/README.md
touch ~/.mackup.cfg
# 備份
mackup backup
- 上傳代碼到你的倉庫
初始化新設備
請確保電腦上安裝瞭如下軟件:
- Git
- Homebrew
- Mackup
git -v
brew -v
mackup --version
- 拉取你的 dotfiles 倉庫
git clone https://github.com/{yourname}/dotfiles.git
# 若 .sh 文件執行無權限則需要增加權限
chmod u+x ~/dotfiles/**/*.sh
- 使用 Homebrew 安裝軟件
/dotfiles/homebrew/setup.sh
- 安裝 vscode 插件
/dotfiles/vscode/setup.sh
- 恢復其他配置文件
# 生成 mackup 配置文件
~/dotfiles/bootstrap.sh
# 另外還需修改 .mackup.cfg 中 `path = /Users/{yourname}/dotfiles` 的 `{yourname}` 替換為你的用户名,以保證路徑正確
# 最後還原備份的文件
mackup restore
圖解:
我的配置模板
https://github.com/lorcannn/d...
參考資料:
- https://github.com/cpojer/dot...
- https://dotfiles.github.io/
- https://github.com/lra/mackup
- https://github.com/Homebrew/h...