dotbackup 是一个简单且高度可定制的 dotfile 备份工具,包含两个命令:dotbackup 和 dotsetup,分别负责备份和恢复备份。基础的 dotbackup 配置十分简单,只需要提供备份路径和需要备份的文件路径,假如想要备份 Vim 和 Neovim,那么可以写一个这样的配置文件:
# 配置文件路径:~/.config/dotbackup/dotbackup.yml
backup_dir: ~/backup
apps:
vim:
files: [~/.vimrc]
nvim:
files: [~/.config/nvim]
然后就可以用 dotbackup 来备份所有文件到 ~/backup,或是 dotbackup app_name ... 来备份任意的应用,dotsetup 则是执行相反的操作恢复备份。这就是 dotbackup 的基础用法,逻辑简单粗暴,就是将文件以相对于家目录的相对路径复制到备份文件夹,比如 ~/.vimrc 会被复制到
~/backup/.vimrc。
dotbackup 的主要设计理念就是尽可能简单,所以核心功能就只是复制文件,不包含版本管理,推荐配合 Git 来使用。但 dotbackup 也提供了一些高级功能来满足特殊需求,比如可以执行 Shell 脚本的 hook 功能,我会用这个功能来配置 Git:
apps:
git:
pre-setup:
- |
git config --global user.name "your name"
git config --global user.email "your email"
dotbackup 还有一些好用的配置选项,比如和系统相关的文件选项,具体可以查看 GitHub 主页上的文档,也可以参考我的 dotfiles。
使用截图
安装
可以通过 AUR 或 archlinuxcn 仓库下载安装。
But Why?
现在已经有了很多 dotfile 管理工具,为什么还要写一个呢?以及为什么要写成这样呢?答案是为了满足我自己的需求,dotbackup 的每一项功能都是为了解决我的一个需求,每个人的需求都不一样,所以 dotbackup 很可能并不适合你,但我想分享一下我在写 dotbackup 时的一些想法,如果你也有相同的需求,那就试试 dotbackup 吧,也欢迎提出问题或建议。
-
为什么使用 YAML 作为配置文件?
因为我希望配置文件尽可能简单。 -
备份文件时为什么不转换隐藏路径?
很多人不喜欢备份的文件有.开头的隐藏路径,这个问题可以通过设置一种路径转换规则来解决,但我觉得这个问题影响不大,而且可以通过软链接或 hook 部分解决该问题,我也希望通过 dotbackup 备份的 dotfiles 也可以被不用 dotbackup 的用户使用(cp -r backup_dir/. ~很多时候都可以代替dotsetup),所以采用了简单的相对路径。 -
如果我想备份的文件不在家目录下怎么办?
配置dotfile_root或使用 hook 来备份。 -
为了解决多个系统配置不同的问题,dotbackup 支持多个配置文件。
-
为了解决不同系统 dotfile 路径不同的问题,dotbackup 支持系统相关的路径选项:
files_linux,files_macos,files_windows。 -
为了解决部分文件在不同系统上会有冲突,dotbackup 支持分系统分应用设置备份文件夹。
-
dotbackup 支持忽略某些文件,这对于会在配置文件夹生成文件的应用很好用。
