Java を使用してリモート サーバーにアクセスし、ファイルにアクセスしてファイルを更新したり、サーバー上のファイルを更新したりしたいと考えていました。
ユーザー名@ホストとパスワードを使用してリモートサーバーにアクセスし、ファイルをアップロードおよびダウンロードできる簡単な方法はありますか?
ありがとう
Java を使用してリモート サーバーにアクセスし、ファイルにアクセスしてファイルを更新したり、サーバー上のファイルを更新したりしたいと考えていました。
ユーザー名@ホストとパスワードを使用してリモートサーバーにアクセスし、ファイルをアップロードおよびダウンロードできる簡単な方法はありますか?
ありがとう
ジョブに適切なツールを使用してください: rsync
JSchを使用して、リモートで ssh 経由でファイルにアクセスできます。
ssh 接続を開きながらマシンに接続したい場合は、OS コマンドを実行するために trilead を使用できます。これは、接続を開くメソッドの例です。
public static Connection newConnectionNoPassword(String host, String username, File privateKey) {
Connection newConn = new Connection(host);
try {
newConn.connect(); // Ignoring ConnectionInfo returned value.
//If the authentication was successful the authenticated connection will be returend
if ( newConn.authenticateWithPublicKey(username, privateKey, null)){
return newConn;
}else{
newConn.close();
return null;
}
} catch (IOException ioe) {
newConn.close();
ioe.printStackTrace();
return null;
}
}
Maven を使用している場合は、次の依存関係を pom.xml に追加することで取得できます。
<dependency>
<groupId>com.trilead</groupId>
<artifactId>trilead-ssh2</artifactId>
<version>build213-svnkit-1.3-patch</version>
</dependency>
サーバーにファイルをアップロード/ダウンロードするには、trilead SCPClient を使用できます。リモート サーバーからローカル フォルダーにファイルをダウンロードする例を次に示します。
public void downloadFiles(String[] remoteFiles, String localDir) throws IllegalArgumentException, IOException {
checkNotEmpty(localDir);
checkNotEmpty(remoteFiles);
File dir = new File(localDir);
if (!dir.exists() || !dir.mkdirs()) {
throw new IOException("Failed to create local directory : " + localDir);
}
SCPClient scp = new SCPClient(this.conn);
try {
scp.get(remoteFiles, localDir);
} catch (IOException e) {
throw new IOException("Failed to copy remote files to local folder", e);
}
}
それが役に立てば幸い..