快轉到主要內容

Chezmoi:優雅管理Linux的dotfile,使用Git儲存庫備份,類似GNU Stow

分類   Linux系統 Linux好用軟體
標籤   Dotfile
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

什麼是dotfile (點檔案/點文件)?簡言之就是應用程式的設定檔,例如~/.vimrc就是dotfile。Linux萬物皆檔案,程式設定多半寫在單一檔案裡面,並且程式通常會將dotfile放在隱藏目錄(Linux檔名以點開頭就會變成隱藏檔案),不讓一般使用者看到。

那麼這些設定檔會放在哪裡呢?多半散落在使用者家目錄下。Dotfile如果管理不當,就會導致 dotfile泛濫成災的問題

時間久了,你可能會忘記設定檔放在哪裡,換電腦要重新備份dotfile是很困擾的事情。尤其對喜歡自定義桌面的人來說,換電腦全部重設文件實在麻煩。

所以,我們需要一款dotfile管理程式。本篇文章Ivon要分享的是Tom Payne開發的「Chezmoi」。

chez moi唸做 /ʃeɪ mwa/ ,在法文為「我家」的意思。chezmoi類似以前流行的GNU Stow,但是功能更多。

chezmoi可以將散落在各個目錄的dotfile統一管理,變成Git儲存庫,追蹤檔案變更,方便日後搬移、還原、多裝置同步。它還支援搭配secret manager管理密碼檔案。

1. 安裝chezmoi
#

參考 Github說明

chezmoi大多數Linux發行版都有收:

# Ubuntu
sudo snap install chezmoi

# Arch
sudo pacman -S chezmoi

或者,你也可以直接抓作者提供的二進位檔安裝,預設會安裝至~/.bin

sh -c "$(curl -fsLS get.chezmoi.io)"

2. 初始化chezomi儲存庫
#

  1. 建立儲存庫,預設位於~/.local/share/chezmoi
chezmoi init
  1. 建議先將初始化chezmoi儲存庫,並推到自己的Github儲存庫備份。
cd ~/.local/share/chezmoi

git remote add origin https://github.com/Github使用者名稱/dotfiles.git

git add -a
git commint -m ""
git push -u origin main

3. chezmoi的dotfile管理方式
#

chezmoi可以追蹤單一檔案或者目錄。

根據 官方文件,chezmoi的管理方式是這樣運作的。你本機的檔案,就好像一個大型git儲存庫一樣,能夠隨時提交或回退。

  1. 將要追蹤的dotfile或目錄加入,chezmoi會紀錄其路徑,並複製一份到自己儲存庫。chezmoi並不會建立符號連結。
chezmoi add ~/.vimrc

chezmoi add ~/.bashrc

chezmoi add ~/.config/yt-dlp
  1. 日後編輯dotfile就用chezmoi管理,使用指令chezmoi managed列出已加入的dotfile。chezmoi cd可快速切換到儲存庫所在的目錄。

  2. 編輯的時候chezmoi修改的會是儲存庫下的檔案,比如這裡~/.vimrc實際上是在編輯~/.local/share/chezmoi/dot_vimrc這個檔案。至於開啟的編輯器為何則是看你的$EDITOR數值。

chezmoi edit ~/.vimrc
  1. 等到編輯完成,輸入chezmoi apply -v指令,才會真的套用變更到原始檔案
# 對照變更
chezmoi diff

# 套用變更
chezmoi apply -v
  1. 如果沒有使用chezmoi指令,卻自行修改了dotfile的話要怎麼辦呢?只要重新把它加入追蹤即可
# 對照變更
chezmoi diff

chezmoi add ~/.vimrc

4. chezmoi其他用法
#

chezmoi支援後面直接串git指令,不過有引數的話要用--隔開防止chezmoi誤判。

chezmoi git add .
chezmoi git add dot_vimrc
chezmoi git -- commit -m "Add .vimrc"

chezmoi status:列出儲存庫狀態。

chezmoi verify:檢驗dotfile是否存在。

chemozi merge <dotile>:開啟vimdiff程式,方便你查看多個檔案的差異。

chezmoi forget <dotile>:取消追蹤特定檔案,但不刪除。

chezmoi rm <dotfile>:刪除dotfile。

chezmoi purge:刪除全部儲存庫下的dotfile。

5. 在多個裝置同步dotfile
#

理想上用單一的Git儲存庫同步會比較方便。

要在其他電腦還原設定檔,那麼就在該電腦用chezmoi複製儲存庫,再Apply套用。

# 複製儲存庫
chezmoi init https://github.com/你的儲存庫網址

# 檢查差異
chezmoi diff

# 套用
chezmoi apply -v

相關文章

試著在Linux系統安裝IBM SPSS Statistics 29 (PS IMAGO PRO 9.0) 統計分析軟體
分類   Linux系統 Linux好用軟體
標籤   IBM SPSS Linux Wine
Valent:手機與Linux電腦無線傳檔案,GTK版的KDE Connect
分類   Linux系統 Linux好用軟體
標籤   KDE Connect GNOME
如何給Chromium瀏覽器啟用Google帳號同步功能
分類   Linux系統 Linux好用軟體
標籤   Google Chrome Raspberry Pi

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur或Postimages。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。