工具控 怎样管理 Linux / Mac 的配置文件

xieyunzi · 2015年10月26日 · 最后由 adamshen 回复于 2016年02月01日 · 6233 次阅读
本帖已被设为精华帖!

怎样管理 linux(mac) 的配置文件

在 *nix 系统中,home 目录下一般有许多程序的配置文件(rc files),它们可以更改程序运行时的行为。

如何管理并在多台机器上分享、同步这些配置文件也算是一个棘手的问题,当然解决方法也有不少

使用 git 直接管理 home 目录

使用 git 之类的版本控制工具把整个 home 目录保存下来,这其中 ignore 文件也有两种处理方式

一种是先 ignore 所有,然后排除需要的文件

示例:cat ~/.gitignore

/*
!/.gitignore
!/.bashrc
/some_dir/*
!/some_dir/sub_dir/*
# ...

另一种是 ignore 不需要的文件

示例:cat ~/.gitignore

/Desktop
/Documents
# ...

利弊

  • : 简单,直观
  • :home 目录会显得不干净,而且每次增加、删除文件都需要更改 .gitignore 文件。

把配置文件集中到一个 home 的子目录,比如 ~/.dotfiles,在 home 目录创建链接到这个 .dotfiles 目录的 symbolic link,这样只需要把这个 .dotfiles 目录使用 git 管理就好了

但是会遇到几个问题

  • 对待同名目录,单纯 link 这个目录可不行,需要在 home 目录创建同名目录,然后分别创建这个目录下的 symlink
  • 手动创建并管理这些 symlink 是非常繁琐的步骤

那么就需要一个辅助管理 symlink 的工具,gnu stow 就是这样的工具

安装 stow

# for mac
$ brew install stow
# for ubuntu
$ apt-get install stow

# show help
$ stow -h

使用

假设你的配置文件存放在 ~/.dotfiles 目录下,结构为

├── git
│   ├── .gitconfig
│   └── .gitignore_global
├── shell
│   ├── .bashrc
│   └── .zshrc

要把 git 配置 link 到 home 目录下

# usage
$ stow -d $HOME/.dotfiles -t $HOME git

这样,.gitconfig.gitignore_global 会被 link 到 home 目录下

$ ls -al ~

lrwxr-xr-x    .gitconfig -> .dotfiles/git/.gitconfig
lrwxr-xr-x    .gitignore_global -> .dotfiles/git/.gitignore_global

实际案例

my dotfiles https://github.com/xieyunzi/dotfiles

使用了 stow 管理 dotfiles,crontab 自动处理一些更新任务

包含了 git, bash, zsh, tmux, vim 等等的配置,目前只在 mac 上使用

当然,还有很多细节的设计

如何处理不同机器所需配置间的微小差异,以及个性化的需求

使用 *.local 文件存储本机的差异性需求,会覆盖同名文件的配置,比如 email 等配置,工作机器和自己的机器一般会不同

待续

共收到 22 条回复

@huacnlee 嗯,但其实我的需求不是完全复制、同步,而是管理和分享 手动管理每个工具的配置我可以只挑选需要的应用在另一台机器上,比如

cd ~/.dotfiles
stow tmux

这样只应用 tmux 的配置到 home 目录

哦,我发现那个工具也可做到,的确很方便

mackup 还可以备份程序的一些配置文件,这个比较赞。尤其是新装机器时(对于洁癖处女座来说)

目前使用Dropbox同步多台设备,写个shell一键处理。 $ ln -s ~/Dropbox/sync/dotfiles/xxx ~/.xxx

我用ansible管理,同时包含我的ubuntu配置。

很不错,支持一下

#1楼 @huacnlee 话说这个Mackup和那个VCSH有什么区别呢?

同样 Dropbox (OneDrive) + BASH 脚本

mackup or homesick

用自己写的 gem,虽然一直没更新过 https://github.com/john1king/backto

自己写shell脚本, 还能同时初始化

https://github.com/Treri/dotfile

看到一半就想到了 mackup 一看果然有人说了。

说真的,当年最开始也是用 git 管理,后来觉得蠢死了,如果没有一个工具辅助帮忙的话真的是简直没法混了。备份还好办,分发到别的机器真的头大。

用Git+Rakefile管理,用了几年了,兼容mac和linux

mac和linux差异放在不同目录,用ruby处理差异。 用的时候 git clone 然后一个rake install 搞定

rake deploysublime
rake deployvim       
rake install              
rake proxy               
rake test                 

#14楼 @mongodb 用了工具 stow

不错~立刻备份配置去

#15楼 @hhuai 真心赞,自由度很高

我试了下在unbuntu下利用mackup配合金山快盘进行备份,发现金山快盘并不能自动同步隐藏的配置文件,需要用tar打包一下才能同步到服务器上。

不知道dropbox是不是可以直接同步配置文件。

#19楼 @adamshen dropbox 可以同步.xxxrc这样的隐藏文件和目录。

#21楼 @sunfjun 我这个发行版本里自带金山快盘的,所以想试试。。。

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册