def recover_memory(base_path, delta_path, raw_meta, raw_mem, out_path):
    # Recover modified memory snapshot
    # base_path: base memory snapshot, delta pages will be applied over it
    # delta_path: memory overlay
    # raw_meta: meta(header/footer/hash list) information of the raw memory
    # raw_mem: raw memory of the base memory snapshot
    # out_path: path to recovered modified memory snapshot

    # Create Base Memory from meta file
    base = Memory.import_from_metafile(raw_meta, raw_mem)
    header_delta, footer_delta, delta_list = DeltaList.fromfile_with_footer(delta_path)

    header = tool.merge_data(base.header_data, header_delta, 1024*1024)
    footer = tool.merge_data(base.footer_data, footer_delta, 1024*1024*10)
    _recover_modified_list(delta_list, raw_mem)
    _recover_memory(base_path, delta_list, header, footer, out_path)
Ejemplo n.º 2
0
def recover_memory(base_path, delta_path, raw_meta, raw_mem, out_path):
    # Recover modified memory snapshot
    # base_path: base memory snapshot, delta pages will be applied over it
    # delta_path: memory overlay
    # raw_meta: meta(header/footer/hash list) information of the raw memory
    # raw_mem: raw memory of the base memory snapshot
    # out_path: path to recovered modified memory snapshot

    # Create Base Memory from meta file
    base = Memory.import_from_metafile(raw_meta, raw_mem)
    header_delta, footer_delta, delta_list = DeltaList.fromfile_with_footer(
        delta_path)

    header = tool.merge_data(base.header_data, header_delta, 1024 * 1024)
    footer = tool.merge_data(base.footer_data, footer_delta, 1024 * 1024 * 10)
    _recover_modified_list(delta_list, raw_mem)
    _recover_memory(base_path, delta_list, header, footer, out_path)
Ejemplo n.º 3
0
        base.get_delta(delta_list, ref_id=DeltaItem.REF_BASE_MEM)

        # 3.find shared within self
        print "[Debug] get delta from itself"
        DeltaList.get_self_delta(delta_list)

        DeltaList.statistics(delta_list)
        DeltaList.tofile_with_footer(header_delta, footer_delta, delta_list,
                                     out_path)

    elif command == "recover":
        if (not settings.base_file) or (not settings.delta_file):
            sys.stderr.write("Error, Cannot find base/delta file. See help\n")
            sys.exit(1)
        base_path = settings.base_file
        delta_path = settings.delta_file
        raw_path = settings.base_file + EXT_RAW
        meta_path = settings.base_file + EXT_META

        # Create Base Memory from meta file
        base = Memory.import_from_metafile(meta_path, raw_path)
        header_delta, footer_delta, delta_list = DeltaList.fromfile_with_footer(
            delta_path)

        header = tool.merge_data(base.header_data, header_delta, 1024 * 1024)
        footer = tool.merge_data(base.footer_data, footer_delta,
                                 1024 * 1024 * 10)
        _recover_modified_list(delta_list, raw_path)
        out_path = base_path + ".recover"
        _recover_memory(delta_list, header, footer, out_path)
        # 2.find shared with base memory 
        print "[Debug] get delta from base Memory"
        base.get_delta(delta_list, ref_id=DeltaItem.REF_BASE_MEM)

        # 3.find shared within self
        print "[Debug] get delta from itself"
        DeltaList.get_self_delta(delta_list)

        DeltaList.statistics(delta_list)
        DeltaList.tofile_with_footer(header_delta, footer_delta, delta_list, out_path)

    elif command == "recover":
        if (not settings.base_file) or (not settings.delta_file):
            sys.stderr.write("Error, Cannot find base/delta file. See help\n")
            sys.exit(1)
        base_path = settings.base_file
        delta_path = settings.delta_file
        raw_path = settings.base_file + EXT_RAW
        meta_path = settings.base_file + EXT_META

        # Create Base Memory from meta file
        base = Memory.import_from_metafile(meta_path, raw_path)
        header_delta, footer_delta, delta_list = DeltaList.fromfile_with_footer(delta_path)

        header = tool.merge_data(base.header_data, header_delta, 1024*1024)
        footer = tool.merge_data(base.footer_data, footer_delta, 1024*1024*10)
        _recover_modified_list(delta_list, raw_path)
        out_path = base_path+".recover"
        _recover_memory(delta_list, header, footer, out_path)