cacti_跨平台迁移
CACTI 跨平台迁移
rrd 文件跨平台迁移
CACTI 迁移的最大问题是 rrd 文件在不同系统下有不同的数据格式,因此必须重新创建数据文件。下面的脚本可以完成这项工作。
设目录下有 rra 目录,拟导出数据到 xml 目录并拷贝到目标机,在目标机内将 xml 目录数据导出到 rra 目录,则应使用下面的脚本:
- rrd_convert.py
#!/usr/bin/env python import os import subprocess def prep_list(rra_path, ext='rrd'): file_list = [] dir_list = [] for root, dirs, files in os.walk(rra_path): for dir in dirs: dir_list.append("%s/%s" % (root, dir)) for file in files: if file.split('.')[-1] == ext: file_list.append("%s/%s" % (root, file)) return dir_list, file_list def mk_xml_struct(prefix, old_prefix, dirs): os.mkdir(prefix) for dir in dirs: os.mkdir("%s%s" % (prefix, dir.replace(old_prefix, ''))) def convert(prefix, old_prefix, files, replacer='.rrd', replacee='.xml', rrd_action='dump'): for file in files: new_file = file.replace(replacer, replacee).replace(old_prefix, prefix) subprocess.Popen(['/usr/bin/rrdtool', rrd_action, file, new_file]) def encode(): dirs, files = prep_list('rra') mk_xml_struct('xml', 'rra', dirs) convert('xml', 'rra', files) def decode(): dirs, files = prep_list('xml', 'xml') mk_xml_struct('rra', 'xml', dirs) convert('rra', 'xml', files, '.xml', '.rrd', 'restore') if __name__ == '__main__': decode()
导入时,只需将最后一行的 decode() 改为 encode() 即可。
cacti_跨平台迁移.txt · 最后更改: 2011/12/23 21:11 由 alex