我想版本控制我的整个切片

我正在从Slicehost租用一片(即一个VPS)。 我花了一两天的时间用我最喜欢的软件包/etc填充/usr ,configuration文件和init脚本,等等。 现在我想:

  1. 将整个设置保存在某个地方(例如,加载到另一台机器上)。
  2. 看看我对哪些文件做了哪些修改
  3. 恢复更改,标记修订和所有其他好的版本控制的东西

保存磁盘映像给我(1),但不是(2)和(3)。

使用Subversion( svn import / svn://someotherhost )可能会给我所有这三个,但是如果我真的尝试检查一个项目到/并在根目录下维护.svn目录,我预计会出现问题。 而要加载我的设置到一个新的切片,我需要先安装一个svn客户端。

有没有一个很好的方法来做我想做的事情?

我假设你正在使用一个市长发行如果我需要做同样的你,我会使用git的一切相关的configuration文件(/等,/ usr /本地/等等),我会避免版本bin文件除非你正在编译你自己的软件包。

我将使用每个发行版的本机软件包pipe理器来复制相同软件包configuration文件的安装。

在基于debian的发行版中,这非常简单:

 dpkg --get-selections | grep '[[:space:]]install$'| awk '{print $1}' > packages-installed 

然后在新系统中:

 cat packages-installed | xargs sudo apt-get install 

问候

我希望git或者其他一些分布式vcs在这个svn上能做得更好。 你可能想看看etckeeper的来源,它基本上跟踪/ etc与git,以及其他dvcs。 Etckeeper可能可以扩展或修改来跟踪整个文件系统。

我看到两个非显而易见的解决scheme。

使用BackupPC备份,可让您轻松检出以前的版本并将其还原。 可以远程或本地完成。

使用puppet进行configurationpipe理。 我不版本控制服务器上的所有文件。 我使用版本控制傀儡模块和清单来描述应该对服务器应用哪些更改。 我完全避免用手触摸服务器,如果我这样做,我会重复木偶的变化。

我用两个。 configuration来自puppet,使用git进行版本控制,“用户数据”版本(服务的网页,主目录等)由backuppc处理。

你可以把/ etc放入SVN 。 不过我会为/ usr使用不同的备份方法。