Поддерживает ли Jsch сторонние операции передачи файлов scp?

Мне нужно скопировать файлы между двумя удаленными машинами (скажем, A и B) с помощью SCP. Допустим, мой java-код работает на машине C, и мне нужно переместить файл из A в B, что я сейчас делаю, это файл SCP из A в C, а затем делаю другой SCP из C в B. Но я узнал, что SCP поддержка передачи файлов между двумя удаленными хостами напрямую с использованием опции «SCP-3». Я использую библиотеку jsch для выполнения scp между двумя машинами. Поддерживает ли jsch описанную выше операцию? если нет другой библиотеки, которую я могу использовать?


person syodage    schedule 03.08.2015    source источник


Ответы (1)


Jsch не содержит прямой поддержки протокола SCP. Вы можете использовать jsch для подключения к удаленным серверам и взаимодействия с ними, но поверх этого вам придется реализовать собственную логику SCP.

Описание протокола SCP можно найти здесь. Для вашего варианта использования вы должны сделать что-то вроде этого:

  1. Откройте сеанс Jsch на исходном хосте.
  2. Откройте канал exec на исходном хосте, вызвав scp для отправки исходных файлов.
  3. Откройте сеанс jsch на целевом хосте.
  4. Откройте канал exec на целевом хосте, вызвав scp для получения файлов.
  5. Прочитайте данные файла из исходного канала и запишите их в целевой канал.

Сказав это, Jsch поддерживает SFTP, а SFTP, как правило, превосходит протокол SCP. Вам следует рассмотреть возможность использования SFTP для этого вместо SCP.

person Kenster    schedule 03.08.2015