use of com.jcraft.jsch.ChannelSftp in project GNS by MobilityFirst.
the class SFTPUpload method localFileNewer.
/**
*
* @param user
* @param host
* @param keyFile
* @param fileToTransfer
* @param sftpWorkingDirectory
* @return true if the local file is newer
*/
public static boolean localFileNewer(String user, String host, File keyFile, String fileToTransfer, String sftpWorkingDirectory) {
if (verbose) {
System.out.println("Local File Newer Check " + fileToTransfer + " to " + host + "@" + user + " " + sftpWorkingDirectory);
}
try {
ChannelSftp channelSftp = authenticateSftp(user, host, keyFile);
Path paths = Paths.get(fileToTransfer);
String localDir = paths.getParent().toString();
channelSftp.cd(sftpWorkingDirectory);
channelSftp.lcd(localDir);
SftpATTRS remoteAttributes = channelSftp.stat(paths.getFileName().toString());
long localTime = new File(fileToTransfer).lastModified();
long remoteTime = remoteAttributes.getMTime() * 1000L;
if (verbose) {
System.out.println("L: " + localDir + " R: " + sftpWorkingDirectory + "\n" + "Local time = " + localTime + " Remote time = " + remoteTime);
}
if (verbose) {
System.out.println("Result " + (localTime > remoteTime));
}
return localTime > remoteTime;
} catch (JSchException | SftpException e) {
System.out.println("Exception while checking for file newer:" + e);
return false;
}
}
use of com.jcraft.jsch.ChannelSftp in project GNS by MobilityFirst.
the class SFTPUpload method uploadFile.
/**
*
* @param user
* @param host
* @param keyFile
* @param fileToTransfer
* @param sftpWorkingDirectory
*/
public static void uploadFile(String user, String host, File keyFile, String fileToTransfer, String sftpWorkingDirectory) {
if (verbose) {
System.out.println("Upload file from " + fileToTransfer + " to " + host + "@" + user + " " + sftpWorkingDirectory);
}
try {
ChannelSftp channelSftp = authenticateSftp(user, host, keyFile);
File f = new File(fileToTransfer);
channelSftp.put(new FileInputStream(f), f.getName());
} catch (JSchException | SftpException | FileNotFoundException e) {
System.out.println("Exception while uploading file:" + e);
}
}
use of com.jcraft.jsch.ChannelSftp in project voltdb by VoltDB.
the class ExportOnServerVerifier method checkForMoreExportFiles.
private void checkForMoreExportFiles() throws Exception {
Comparator<String> comparator = new Comparator<String>() {
@Override
public int compare(String f1, String f2) {
f1 = f1.substring(f1.lastIndexOf('/') + 1);
f2 = f2.substring(f2.lastIndexOf('/') + 1);
Matcher m1 = EXPORT_FILENAME_REGEXP.matcher(f1);
Matcher m2 = EXPORT_FILENAME_REGEXP.matcher(f2);
if (m1.matches() && !m2.matches())
return -1;
else if (m2.matches() && !m1.matches())
return 1;
long first_ts = Long.parseLong(m1.group(2));
long second_ts = Long.parseLong(m2.group(2));
if (first_ts != second_ts) {
return (int) (first_ts - second_ts);
} else {
long first_txnid = Long.parseLong(m1.group(1));
long second_txnid = Long.parseLong(m2.group(1));
if (first_txnid < second_txnid) {
return -1;
} else if (first_txnid > second_txnid) {
return 1;
} else {
return 0;
}
}
}
};
checkForMoreFilesRemote(comparator);
for (Pair<ChannelSftp, String> p : m_exportFiles) {
System.out.println("" + p.getFirst().getSession().getHost() + " : " + p.getSecond());
}
}
use of com.jcraft.jsch.ChannelSftp in project voltdb by VoltDB.
the class ExportOnServerVerifier method openNextExportFile.
Pair<BufferedReader, Runnable> openNextExportFile() throws Exception {
if (m_exportFiles.isEmpty()) {
checkForMoreExportFiles();
}
Pair<ChannelSftp, String> remotePair = m_exportFiles.poll();
if (remotePair == null)
return null;
final ChannelSftp channel = remotePair.getFirst();
final String path = remotePair.getSecond();
System.out.println("INFO export: Opening export file: " + channel.getSession().getHost() + "@" + path);
final BufferedReader reader = new BufferedReader(new InputStreamReader(channel.get(path)), 4096 * 32);
Runnable r = new Runnable() {
@Override
public void run() {
try {
reader.close();
channel.rm(path);
} catch (Exception e) {
Throwables.propagate(e);
}
}
};
return Pair.of(reader, r);
}
use of com.jcraft.jsch.ChannelSftp in project bamboobsc by billchen198318.
the class SFtpClientUtils method put.
/**
* 本地檔案放到遠端SFTP上
*
* @param user
* @param password
* @param addr
* @param port
* @param localFile
* @param remoteFile
* @throws JSchException
* @throws SftpException
* @throws Exception
*/
public static void put(String user, String password, String addr, int port, List<String> localFile, List<String> remoteFile) throws JSchException, SftpException, Exception {
Session session = getSession(user, password, addr, port);
Channel channel = session.openChannel("sftp");
channel.connect();
ChannelSftp sftpChannel = (ChannelSftp) channel;
try {
for (int i = 0; i < localFile.size(); i++) {
String rf = remoteFile.get(i);
String lf = localFile.get(i);
logger.info("put local file: " + lf + " write to " + addr + " :" + rf);
sftpChannel.put(lf, rf);
logger.info("success write to " + addr + " :" + rf);
}
} catch (Exception e) {
e.printStackTrace();
throw e;
} finally {
sftpChannel.exit();
channel.disconnect();
session.disconnect();
}
}
Aggregations