public static void exec(SecureContext pContext, String pSrcDir,
			String pRemotePath, List<String> pIgnores) throws IOException,
			JSchException {
		if (log.isDebugEnabled()) {
			log.debug(debugLine(pSrcDir, pContext.getUsername(),
					pContext.getHost(), pRemotePath,
					pContext.getPrivateKeyFile()));
			log.debug("ignoring: " + pIgnores);
		}

		String filename = new File(pSrcDir).getName() + ".tar.gz";
		String filepath = pSrcDir + "/../" + filename;
		
		TarAndGzip.folder(new File(pSrcDir), pIgnores);
		if (log.isInfoEnabled()) {
			log.info("tar'ing: "
					+ new File(filepath).getAbsolutePath());
		}
		Scp.exec(pContext, filepath, "'" + pRemotePath + "/" + filename + "'");
		if (log.isInfoEnabled()) {
			log.info("scp'ing: " + filepath + " "
					+ pContext.getUsername() + "@" + pContext.getHost() + ":"
					+ pRemotePath + "/" + filename);
		}
		if (log.isDebugEnabled()) {
			log.debug("remote extraction: tar zxvf " + filename);
		}
		Exec.exec(pContext, "cd '" + pRemotePath + "'; tar zxvf '" + filename
                + "'; rm '" + filename + "'");
		if (log.isDebugEnabled()) {
			log.debug("Succesfully copied");
		}
		FileUtils.deleteQuietly(new File(filepath));
	}