最近、jsch-0.1.41 を使って、ChannelSftp 経由でリモート Linux サーバー上のリソースを操作しています。シェル コマンド「cp」と同様の機能を提供する機能がないことがわかりました。これら 2 つのディレクトリは両方とも Linux サーバー上のリモート ディレクトリです。
私のプレゼンテーションに間違った点がありましたら、ご指摘ください。ありがとうございます。
SFTP プロトコルはそのようなコマンドを提供しないため、JSch の ChannelSftp もそれを提供しません。
基本的に次の 2 つの選択肢があります。
get
とを組み合わせて使用しput
ます。つまり、ファイルをダウンロードして再度アップロードします。これはローカル ストレージなしで実行できますが (単純にストリームの 1 つを別のストリームに接続するだけです)、ネットワークを介してデータを 2 回移動する (および暗号化/復号化を 2 回行う) 必要があり、実際には必要ありません。これは、他の方法が機能しない場合にのみ使用してください。
SFTP は使用せず、exec
チャネルを使用してサーバー上でコピー コマンドを実行します。Unix サーバーでは、このコマンドは通常cp
、Windows サーバーではcopy
. (サーバーの管理者が何らかの理由でアカウントを SFTP のみのアクセスに制限している場合、これは機能しません。)