问题:我想确保某个文件夹在我的服务器上的内容是相同的。
我不希望自动文件同步保持平等,更改是手动完成的。
我最初的想法是每天一次计算文件夹上的一些crc /散列并发送到Zabbix,并在值不同时触发。
有没有可以计算crc或类似文件夹的好工具?
任何人都知道解决我的问题的另一个解决scheme?
我刚才也遇到了同样的问题,写了一些python代码来生成校验和:
def checksum(root): md5sums = {} items = os.path.walk(root, checksum_dir, md5sums) _md5sums = [] for k in sorted(md5sums.keys()): _md5sums += md5sums[k] return md5.new(''.join(_md5sums)).hexdigest() def checksum_dir(md5sums, path, names): names.sort() if '.git' in names: names.remove('.git') md5sums[path] = [] for name in names: name = os.path.join(path, name) if os.path.islink(name): md5sums[path].append(os.readlink(name)) elif os.path.isdir(name): continue elif os.path.isfile(name): fd = open(name) md5sums[path].append(md5.new(fd.read()).hexdigest()) fd.close() else: raise ValueError("File %s is not a normal name or a symlink")
我把它包装在一个func模块中,并通过nrpe(我们使用nagios而不是zabbix)触发funcmaster的相关检查。
有两种select你想要的:tripwire(3070678sourceforge.net/projects/tripwire/)和Aide( http://aide.sourceforge.net/ )。
两者的工作stream程都差不多,但是正如我所知,这就是我要告诉你的。 首先,您要为每个要监视的文件和(MD5和SHA1)初始化一个数据库。 助手允许您select要监视的更改:文件的内容,uid或gid,执行位,块计数…然后,每天,您将监视的文件的当前状态与D B。 如果有什么区别的话,艾德会告诉你的。 无论何时进行受控更改,都需要重新初始化DB。
与Zabbix或Nagios集成并不是很好,但也许有帮助。
如果您仍然在寻找可以在多台服务器之间进行区分的工具,并在出现任何差异时发送警报,请访问www.metaforsoftware.com。 您可以将其设置为每日或每小时差异。 它现在在免费testing版。 (完全披露:我是联合创始人)