Example #1
0
def execute(state):

    # Restore tracking DB from storage, ignore possible error
    err, msg = storager.restore(
            state.states.storager,
            "{}/{}".format(state.model.dirstorage, '_aeroback'),
            state.states.dbr.model.dir_db,
            state.states.dbr.model.filename,
            None)
    if err:
        warn = "Backup {}: File Incremental Tracking DB not found in storage. Ignore if that's the first run".format(state.model.atype)
        state.add_msg_warning(warn)
        _D.WARNING(
                __name__,
                warn,
                'msg', msg
                )

    # Tracking DBr execute
    err, msg = dbr.execute(state.states.dbr)
    if err:
        return 1, msg

    # Update DB params
    dbr.update_params(state.states.dbr, state.model.directory, state.model.dirstorage)

    # Clear DB list of local files and files to be uploaded
    dbr.clear_locals_uploads(state.states.dbr)

    # Scan local files and add them to DB
    err, msg = _scan_local_files(state)
    if err:
        state.add_msg_error(msg)

    # Find differences
    err, msg = dbr.find_local_storage_diff(state.states.dbr, state.model.maxupload)
    if err:
        state.add_msg_error(msg)

    # Store differences
    err, msg = _store(state)
    if err:
        state.add_msg_error(msg)

    return 0, None
Example #2
0
def cleanup(state):
    '''Cleanup state'''

    # Clear DB list of local files and uploaded files to minimize DB size
    dbr.clear_locals_uploads(state.states.dbr)

    # Dump DB
    dbr.dump_params(state.states.dbr)
    #dbr.dump_files_storage(state.states.dbr)

    # Get statistics of what's in storage now
    storfiles, storsize = dbr.stats_storage(state.states.dbr)
    print '#### STOR FILES', storfiles
    print '#### STOR SIZE', storsize

    progress = int(float(storsize) / float(state.total_local_size) * 100.0)
    storsize = fmtutil.byte_size(storsize)

    state.set_stats_category('Storage Total', 'Progress', '{}%'.format(progress))
    state.set_stats_category('Storage Total', 'Files count', storfiles)
    state.set_stats_category('Storage Total', 'Files size', storsize)

    # Disconnect DBr
    dbr.cleanup(state.states.dbr)

    # Get DB file size for statistics
    db_size = fmtutil.byte_size(dbr.get_db_file_size(state.states.dbr))
    state.set_stats_category('Tracking DB', 'DB size', db_size)

    # Store DB (local --> storage)
    err, msg = storager.store(
            state.states.storager,
            state.states.dbr.model.filepath,
            "{}/{}".format(state.model.dirstorage, '_aeroback'),
            None)
    if err:
        _D.ERROR(
                __name__,
                "Error storing File Incremental Tracking DB",
                'file', state.states.dbr.model.filename,
                'msg', msg
                )