我有几十台 Linux 机器正在运行cron
,我想将 crontab 放在某种版本控制系统中。对于源代码控制,我使用 Mercurial ( hg
),所以这是理想的,但如果有其他更适合此任务的系统,我会考虑它。
我的情况特有的一个方面是所有 crontab 都属于一个普通用户(不是真人,而是占位符“服务”登录)。我希望修订历史记录包括每个更改的实际作者,而不是 cron 作业实际运行的特殊帐户。
我有几十台 Linux 机器正在运行cron
,我想将 crontab 放在某种版本控制系统中。对于源代码控制,我使用 Mercurial ( hg
),所以这是理想的,但如果有其他更适合此任务的系统,我会考虑它。
我的情况特有的一个方面是所有 crontab 都属于一个普通用户(不是真人,而是占位符“服务”登录)。我希望修订历史记录包括每个更改的实际作者,而不是 cron 作业实际运行的特殊帐户。
crontab -l 将您的 crontab 转储到标准输出,您可以将其重定向到文件。您可以有一份工作(自然是在 cron 中)将其重定向到一个文件,然后进行差异化,并根据需要推送到源代码控制。
http://joey.kitenet.net/code/etckeeper/?
从那个网站:
etckeeper 是一组工具,可让 /etc 存储在 git、mercurial、darcs 或 bzr 存储库中。它与 apt(以及其他包管理器,包括 yum 和 pacman-g2)挂钩,以在包升级期间自动提交对 /etc 所做的更改。它跟踪修订控制系统通常不支持的文件元数据,但这对 /etc 很重要,例如
/etc/shadow
. 它非常模块化和可配置,如果您了解使用修订控制的基础知识,它也很容易使用。
如果 linux 系统遵循 LFS(linux 文件系统标准,IIRC),那么 /etc 应该只包含配置文件。通过将整个 /etc 导入 CVS,我有很好的经验。
唯一的问题是只有 root 可以提交更改,所以很难看出是谁破坏了某些东西。这可以通过为每个管理员分配一个 3 个字母的短名称并设置每个提交必须以该名称开头的规则来解决。