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
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 )