管理 Linux 用户配置(点文件)的最好方式

本文最后更新于 2023年9月24日 上午

前言

标题有点违反广告法了哈哈哈,言归正传,作为一个 Linux User,随着时间的推移,我积攒了一大堆自定义的配置文件。有时某些软件会在我不知道的时候自动修改这些文件,这会对我造成一些困扰,而且每次重装系统或在其他设备初始化工作环境时都要一个一个地拷贝它们,这太不优雅了!我得想个办法解决这些问题。经过搜索,我找到了以下几种方式:

  1. 【译】使用 GNU stow 管理你的点文件
  2. How to Store Dotfiles - A Bare Git Repository
  3. chezmoi: Manage your dotfiles across multiple diverse machines, securely.

经过试用/对比,我最终选用了第二个链接内提到的方法,即使用 Bare Git Repository 方式管理。得益于 Git 的强大功能,这种方式主要可以做到以下功能:

  • 版本管理
  • 监测配置更改
  • 多设备同步

这是我的 dotfiles 仓库,这种方法的所有功能都是通过 git 实现的,只需要往 .bashrc 里写入一个命令别名。由于下面有更好的方法,此处不再赘述,感兴趣的话可以看一下我仓库里的 README.md

后来我又发现了一个工具:yadm,这个工具也是基于 Bare Git Repository 设计的,比我原来的方法多了一些挺实用的功能(比如敏感文件加密存储,这个功能其实 git 本身就可以通过插件支持,但没有直接使用 yadm 方便就是了),由于底层原理相同,我原来的方法建立的仓库和本工具是完全兼容的,把配置同步到远端仓库后直接 yadm clone <repo url> 然后 yadm checkout $HOME 就可以无痛切换到新工具了,开森 🥰

安装

大多数发行版都可以直接使用包管理工具安装 yadm,如果发行版仓库里没有,也可以直接从 Github 仓库下载(这个东西本质上其实就是一个 shell 脚本)

1
2
3
mkdir -p ~/.local/bin
curl https://fastly.jsdelivr.net/gh/TheLocehiliosan/yadm@master/yadm -o ~/.local/bin/yadm
chmod +x ~/.local/bin/yadm

使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 初始化一个新仓库
yadm init

# 克隆现有仓库
yadm clone <url>

# 增添文件/应用更改
yadm add <important file>
yadm commit

# 加密存储 ssh 密钥,以安全地同步它
echo '.ssh/id_rsa' > ~/.config/yadm/encrypt
yadm encrypt

# 可以在同步本仓库到其他设备后,解密ssh密钥
yadm decrypt

# 为Linux与MacOS创建不同的文件
yadm add path/file.cfg##os.Linux
yadm add path/file.cfg##os.Darwin

管理 Linux 用户配置(点文件)的最好方式
https://blog.oopsky.top/post/5fa4b291/
作者
waleslau
发布于
2023年2月6日
更新于
2023年9月24日
许可协议