服务器 频道

巧用cfengine管理linux服务器(下)

 四、使用cfrun

 cfrun命令允许在网络上任何数量的系统中执行cfagent。它需要在当前目录中包含名为

 cfrun.hosts的配置文件(或通过-f选项指定的文件)。文件的内容应如下所示:

 domain=mydomain.com

 server.mydomain.com

 client1.mydomain.com

 client2.mydomain.com

 除域设置外,此文件仅是包含每台主机(包括服务器)的一个列表。通过将下列选项添加到

 文件顶部,还可以将输出记录到一系列文件中(而非显示在屏幕上):

 outputdir=/tmp/cfrun_output

 maxchild=10106

 上述代码告诉cfrun生成10个进程,并将每台主机的输出保存在指定目录的不同文件中。

 通常运行cfrun可以不带参数。如果确实要指定参数,格式如下所示:

 cfrunCFRUN_OPTIONSHOSTS--CFAGENT_OPTIONS-CLASSES

 CFRUN_OPTIONS是可选的。可为cfrun命令包含任何数量的选项。接着,可以指定主机

 名的可选列表。如果已指定了某些主机,则只联系这些主机。如果未指定任何主机,则联系

 cfrun.hosts文件中的每个主机。

 第一个--之后是在每个远程系统上运行的要传送给实际cfagent命令的任何选项。第二个--

 之后是类的可选列表。如果指定了某些类,那么只有与其中某个类匹配的主机将实际执行

 cfagent(尽管已联系了每个主机,因为每个主机必须决定它是否匹配其中一个类)。

 五、 应用实例:使用cfengine备份数据

 如果您已经阅读本文之前的大部分内容,就会知道cfengine非常棒。一旦安装并运行了cfengine,它就可以为您做任何事,包括备份数据。

 1、使用cfengine执行本地备份

 首先,可以使用cfengine完成文件和目录的复制。cfengine可以执行完美的复制--包括

 特殊文件、符号链接以及目录的复制。它还可以保留文件的宿主和权限。下面是一个基本的配置,可以将其放入cfagent.conf文件中(如果已经有了一个copy段,可以在现有的copy段后面直接添加内容):

 copy:

 /etcdest=/usr/local/backup/etcpurge=truer=inf

 这样可以让网络中的每台主机都递归地将/etc/目录精确地复制到/usr/local/backup/目录中。purge=true选项可以让复制操作删除那些源目录中没有而目标目录中存在的文件。

 每次执行cfagent时都会执行这个复制过程,通常来说这过于频繁了。可以限制每天只执行一次这种操作:

 copy:

 Hr06.OnTheHour::

 /etcdest=/usr/local/backup/etcpurge=truer=inf

 现在只有在每天06:00运行cfagent时才会执行复制操作。此处假设您在整点时运行cfagent,而且每小时运行一次。如果不这样做,就应该适当调节示例中的时间设置。此例的问题是每天的备份都会覆盖前一天的备份。因此,您用来判断系统/etc/目录中可能出现的问题的时间只有不到24个小时。不必担心,我可以增强备份系统的功能,让它保留一周中有价值的备份。

 control:

 day_of_week=(ExecResult(/bin/date+%a))

 copy:

 Hr06.OnTheHour::

 /etcdest=/usr/local/backup/${day_of_week}/etc

 purge=truer=inf

 现在您可以把有价值的备份数据保留7天,这些备份位于/usr/local/backup/Mon/etc、

 /usr/local/backup/Tue/etc等目录中。

 2、 在备份时排除文件

 如果想在备份时包括或者排除一些文件,可以在copy段中使用3个可选参数。第一个是

 ignore参数。可以指定任意多个这种参数,每个参数都提供了一种模式,任何匹配的文件和目录都将被忽略。这是防止对特定目录执行递归操作的惟一方法。

 第二个参数是include。可以使用这个参数来指定在复制时应该包括的所有文件列表。可以

 指定任意多个include参数,但是即使只有一个include参数,也会导致不匹配的文件在默认情况下被排除在复制操作之外。

 最后一个参数是exclude选项。任何匹配这种模式的文件都会被排除在复制操作之外。下

 面是一个例子:

 copy:

 Hr06.OnTheHour::

 /homedest=/usr/local/backup/homepurge=truer=inf

 ignore=cache#Netscapecachedirectory

 ignore=Cache#Mozillacachedirectory

 exclude=*.tmp

 上面的例子表示tmp文件会被排除在备份文件之外。

 总结:cfengine 是一种独特的系统管理工具。即使您没有决定使用它,但其概念和执行将对您的工作产生帮助。如果您决定使用它,您将发现 cfengine 无限的灵活性和惊人的用处。

0
相关文章