code: public static void copyRecursive(Resource src, Resource trg, ResourceFilter filter) throws IOException {
  	// print.out(src);
  	// print.out(trg);
  	if (!src.exists()) return;
  	if (src.isDirectory()) {
  	    if (!trg.exists()) trg.createDirectory(true);
  	    Resource[] files = filter == null ? src.listResources() : src.listResources(filter);
  	    if (files != null) for (int i = 0; i < files.length; i++) {
  		copyRecursive(files[i], trg.getRealResource(files[i].getName()), filter);
  	    }
  	}
  	else if (src.isFile()) {
  	    touch(trg);
  	    IOUtil.copy(src, trg);
  	}
      }
docs: copy a file or directory recursive (with his content)
  
  @param src
  @param trg
  @param filter
  @throws IOException
  @throws FileNotFoundException