Copy files between diferent directories.

    Copy one or more files to an existing directory. This function is
    recursive, if the source is a directory, all its subdirectories are created
    in the destination. Existing files in destination are overwrited without
    any warning.

    Args:
        source (str): File or directory name.
        dest (str): Directory name.

    Raises:
        FileNotFoundError: Destination directory doesn't exist.

def copy_rec(source, dest):
    """Copy files between diferent directories.

    Copy one or more files to an existing directory. This function is
    recursive, if the source is a directory, all its subdirectories are created
    in the destination. Existing files in destination are overwrited without
    any warning.

    Args:
        source (str): File or directory name.
        dest (str): Directory name.

    Raises:
        FileNotFoundError: Destination directory doesn't exist.
    """

    if os.path.isdir(source):
        for child in os.listdir(source):
            new_dest = os.path.join(dest, child)
            os.makedirs(new_dest, exist_ok=True)
            copy_rec(os.path.join(source, child), new_dest)

    elif os.path.isfile(source):
        logging.info(' Copy "{}" to "{}"'.format(source, dest))
        shutil.copy(source, dest)

    else:
        logging.info(' Ignoring "{}"'.format(source))