code: protected void performSingleCopyOperation(
          String source,
          String target,
          String sitePrefix,
          CmsResourceCopyMode copyMode,
          boolean overwrite) throws CmsException {
  
          // calculate the target name
          String finalTarget = CmsLinkManager.getAbsoluteUri(target, CmsResource.getParentFolder(source));
  
          if (finalTarget.equals(source) || (isMultiOperation() && finalTarget.startsWith(source))) {
              throw new CmsVfsException(Messages.get().container(Messages.ERR_COPY_ONTO_ITSELF_1, finalTarget));
          }
  
          try {
              CmsResource res = getCms().readResource(finalTarget, CmsResourceFilter.ALL);
              if (res.isFolder()) {
                  // target folder already exists, so we add the current folder name
                  if (!finalTarget.endsWith("/")) {
                      finalTarget += "/";
                  }
                  finalTarget = finalTarget + CmsResource.getName(source);
              }
          } catch (CmsVfsResourceNotFoundException e) {
              // target folder does not already exist, so target name is o.k.
              if (LOG.isInfoEnabled()) {
                  LOG.info(e.getLocalizedMessage());
              }
          }
  
          // set the target parameter value
          setParamTarget(finalTarget);
  
          // delete existing target resource if selected or confirmed by the user
          if (overwrite && getCms().existsResource(finalTarget)) {
              checkLock(finalTarget);
              getCms().deleteResource(finalTarget, CmsResource.DELETE_PRESERVE_SIBLINGS);
          }
          // copy the resource
          getCms().copyResource(sitePrefix + source, finalTarget, copyMode);
      }
docs: Performs the copy operation for a single VFS resource.<p>
  
  @param source the source VFS path
  @param target the target VFS path
  @param sitePrefix the site prefix
  @param copyMode the copy mode for siblings
  @param overwrite the overwrite flag
  
  @throws CmsException if copying the resource fails