同じサーバー上のある SFTP フォルダーから別のフォルダーにファイルをコピー (複製) するという問題に直面しました。
では、質問: リモートで行うための効果的な方法はありますか (つまり、データをクライアントにコピーせずに)。
私はJSch ライブラリで Java を使用しています。
同じサーバー上のある SFTP フォルダーから別のフォルダーにファイルをコピー (複製) するという問題に直面しました。
では、質問: リモートで行うための効果的な方法はありますか (つまり、データをクライアントにコピーせずに)。
私はJSch ライブラリで Java を使用しています。
SFTP プロトコル自体は、サーバー自体ではなく、クライアントとサーバー間のデータ転送のみをサポートします。
ただし、基盤となる SSH プロトコル (および JSch の実装) の他の部分を使用して、サーバー上でコマンドを実行することはできます。この場合、Joop が述べたように、Exec チャネルを使用するのが適切です。ChannelSftpに使用したのと同じセッションを、他の任意の数のチャネル (exec チャネルなど) にも使用できます。使用後は必ずチャンネルを閉じてください。(詳細については、JSch wiki のShell、Exec、または Subsystem Channelページを参照してください。
もちろん、サーバーがコマンドの実行をサポートしていない場合、たとえば SFTP のみをサポートするように構成されている場合、これは機能しません。その場合、唯一の解決策は、このファイルをダウンロードして再アップロードすることです。
! ...
SFTPでは、ローカルコマンドの実行である実行が可能です。
! cp a.txt a-backup.txt
JSchもSSH接続を提供できるため、感嘆符でさえ意味がありません。コードの場合、例にいくつかの出発点があります。Execサンプルで実行する必要があります。