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