像大多数 *nix 人一样,我倾向于使用我的工具并按照我喜欢的方式配置它们。这一切都很好,直到最近。随着我做越来越多的工作,我倾向于登录越来越多的机器,并且有越来越多的东西在我的家用机器上配置得很好,但不一定在我的工作机器、我的网络服务器或我的任何工作上服务器...
你如何保持这些配置文件的更新?你只是手动复制它们吗?您是否将它们存储在公共场所?
像大多数 *nix 人一样,我倾向于使用我的工具并按照我喜欢的方式配置它们。这一切都很好,直到最近。随着我做越来越多的工作,我倾向于登录越来越多的机器,并且有越来越多的东西在我的家用机器上配置得很好,但不一定在我的工作机器、我的网络服务器或我的任何工作上服务器...
你如何保持这些配置文件的更新?你只是手动复制它们吗?您是否将它们存储在公共场所?
我还使用颠覆来管理我的点文件。当我登录到一个盒子时,我的 confs 会自动为我更新。我还使用 github 公开存储我的 confs。我使用 git-svn 使两者保持同步。
在新服务器上启动和运行只是运行几个命令的问题。create_links 脚本只是将 .dotfiles 文件夹项目中的符号链接创建到 my$HOME
中,并且还涉及一些不需要签入的文件。
$ cd
# checkout the files
$ svn co https://path/to/my/dotfiles/trunk .dotfiles
# remove any files that might be in the way
$ .dotfiles/create_links.sh unlink
# create the symlinks and other random tasks needed for setup
$ .dotfiles/create_links.sh
这些天,我似乎到处都发现了一件新事物,让我说“嘿,使用DropBox会是件好事”
Rsync 是您最好的解决方案。可以在这里找到示例:
我肯定会推荐想家。它使用 git 并自动对您的文件进行符号链接。homesick track
跟踪新的点文件,同时homesick symlink
将存储库中的新点文件符号链接到您的主文件夹。这样,您甚至可以拥有多个存储库。
你可以使用 rsync。它通过 ssh 工作,我发现这很有用,因为我只设置了具有 ssh 访问权限的新服务器。
或者,创建一个 tar 文件,您可以到处移动并解压缩。
我将它们存储在我的版本控制系统中。
我使用 svn ...拥有一个公共和一个私有存储库...所以一旦我进入服务器,我就
svn co http://my.rep/home/public
并拥有我所有的点文件...
我将我的存储在git
存储库中,这使我可以轻松地合并系统相关更改之外的更改,同时共享我想要的更改。
我将文件的主版本保留在我的主机上的 CM 控制下,并在我需要的地方安排复制更新。幸运的是,我们的大多数机器上的主目录都有 NFS 挂载,因此我实际上不必经常复制所有内容。另一方面,我的配置文件相当复杂 - 并且在不同的机器上提供了不同的 PATH 设置等。粗略地说,我有管理控制权的机器比我偶尔使用的没有管理控制权的机器安装了更多的开源软件。
所以,我随机混合了手动和半自动过程。
在netskel中,您可以将常用文件放在 Web 服务器上,然后客户端程序会在任意数量的客户端计算机上维护点文件。它被设计为在任何级别的客户端机器上运行,因此 shell 脚本是正确的sh
脚本并且具有最少的依赖关系。
svn 也在这里。Rsync 或 unison 将是一个好主意,除了有时东西停止工作,我想知道上周我的 .bashrc 文件中有什么。在这种情况下,Svn 是救生员。
现在我使用Live Mesh,它可以让我的所有文件在多台机器上保持同步。
我将所有点文件放入 Dropbox 上的一个文件夹中,然后将它们符号链接到每台机器。在一台机器上所做的更改几乎可以立即提供给所有其他机器。它只是工作。
根据您的环境,您还可以使用(完全备份的)NFS 共享...
说到在公共场合存储点文件,有
和
但是手动更新文件真的很痛苦,因为(AFAIK)这些服务都没有提供任何 API。
后者非常简约(没有联系表格,没有关于谁制造/拥有它的信息等)
公文包是一种便于将点文件保存在 git 中的工具,包括那些带有私人信息的文件(例如 .gitconfig)。
通过将配置文件保存在 git public git 存储库中,您可以与他人共享您的设置。任何秘密信息都保存在存储库之外的单个文件中(由您来备份和传输此文件)。
Ira/mackup 是一个适用于 Linux 和 Mac 系统的实用程序,它将使用几乎所有流行的共享存储提供商(dropbox、icloud、google drive)同步应用程序首选项。它通过用符号链接替换点文件来工作。
它还有一个包含数百个支持的应用程序的大型库https://github.com/lra/mackup/tree/master/mackup/applications