code: def __copy_tree(src_dir, dest_dir):
      
  
      if not os.path.exists(dest_dir):
          os.makedirs(dest_dir)
          shutil.copystat(src_dir, dest_dir)
  
      for entry in os.listdir(src_dir):
          from_path = os.path.join(src_dir, entry)
          to_path = os.path.join(dest_dir, entry)
          if os.path.isdir(from_path):
              __copy_tree(from_path, to_path)
          else:
              shutil.copy2(from_path, to_path)
docs: The shutil.copytree() or distutils.dir_util.copy_tree() will happen to report
      error list below if we invoke it again and again ( at least in python 2.7.4 ):
  
      IOError: [Errno 2] No such file or directory: ...
  
      So we have to write our's copy_tree() for that purpose.