def METHOD_NAME(dest, src):
    """
    Copy files from SRC directory into DEST, recursively.  The DEST directory
    is created, including subdirectories (if not existent).  The files in DEST
    are created or updated (shutil.copy2).  If file is about to replace
    directory or vice versa, it is done without asking.  Files that are in DEST
    and not in SRC are kept untouched.
    """
    getLog().debug("Updating files in %s with files from %s", dest, src)
    mkdirIfAbsent(dest)
    for dirpath, dirnames, filenames in os.walk(src):
        raw_subpath = os.path.relpath(dirpath, src)
        subpath = os.path.normpath(raw_subpath)
        destpath = os.path.join(dest, subpath)
        for filename in filenames:
            file_from = os.path.join(dirpath, filename)
            file_to = os.path.join(destpath, filename)
            _best_effort_removal(file_to)
            shutil.copy2(file_from, file_to)
        for subdir in dirnames:
            dest_subdir = os.path.join(destpath, subdir)
            _best_effort_removal(dest_subdir, use_rmtree=False)
            mkdirIfAbsent(dest_subdir)